LI E> R.AR.Y OF THE U N IVER.5ITY OF ILLI NOIS 510.84 Ii6r no. 156-163 c o p o 2 Digitized by the Internet Archive in 2013 http://archive.org/details/arithmeticsubsys160penh 3I0.84- h o.lGO UNIVERSITY OF ILLINOIS GRADUATE COLLEGE DIGITAL COMPUTER LABORATORY T REPORT NO. 160 THE ARITHMETIC SUBSYSTEM OF THE NEW ILLINOIS COMPUTER by J. 0. Penhollow January 2k, I96U This work was supported in part by the Atomic Energy Commission under Contract No„ AT(ll-l)-Ul5 Return this book on or before the Latest Date stamped below. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from the University. University of Illinois Library 25 NOV 2 9 '^ NOV 1 1 R PCD L161— O-1096 UNIVERSITY OF ILLINOIS GRADUATE COLLEGE DIGITAL COMPUTER LABORATORY REPORT NO, 160 THE ARITHMETIC SUBSYSTEM OF THE NEW ILLINOIS COMPUTER by J. 0. Penhollow January 2k, 196k This work was supported in part by the Atomic Energy Commission under Contract No„ AT(ll-l)-4l5 fk . -J ACKNOWLEDGMENTS The design and development of the Arithmetic Subsystem of the new Ill- inois computer was accomplished through the efforts of many people. To name all of them would be difficult, "but a few deserve special recognition. D. E. Muller, J. E. Robertson, D. B. Gillies, D. J. Wheeler, W. J. Poppel- baum, and G. Metze contributed many of the basic concepts which are incorporated in the present design. The original set of logic circuits was developed by W. J. Poppelbaum and N. E. Wiseman. These circuits were later modified and augmented by J, E. Rob- ertson, G. Metze, K. C. Smith, and H, Guckel, H. Aiso, M. Faiman, R. R. Shively, R. E. Swartwout, and the author completed the final logic design under the competent and energetic leadership of D. B. Gillies. The work of this group was also directed and influenced by the advice and criticism of R. E. Meagher, J. E. Robertson, and D. E. Muller, A number of errors in the final design of delayed control were discovered and cor- rected by R. H. Farrell. In the development stage, the design group benefited from the counsel and guidance of J. E„ Robertson, C. E. Carter, H„ E. Lopeman, and T. E, Kerker- ing. The set of logic drawings which describe the subsystem was produced by H, Aiso, R. E. Swartwout and the author with the help of H. E. Lopeman, So P. Krabbe, R. F. Kingsley, K. C. Law, J. K. Burr ell, and other members of the draft- ing department. The component layout was accomplished by R. L. Cummings, M, D. Freedman, R. F. Kingsley, S. P. Krabbe, and L. J. Peck under the direction of H. E, Lopeman and A. F. Irwin, T. E, Kerkering and F. P. Serio supervised the construction. •111- TABLE OF CONTENTS P( g< 1. INTRODUCTION 1 2. ORGANIZATION OF THE ARITHMETIC SUBSYSTEM AND ITS RELATIONSHIP WITH THE EXECUTIVE SUBSYSTEM 6 3. THE ARITHMETIC UNIT 10 3.1 The Main Arithmetic Unit 10 3.1.1 A Summary of the MAU Logic l6 3.1.2 The MAU Bit Path Logic 21 3.1.2.1 The Fl to M Path 22 3.1.2.2 The R to M Path 22 3.1.2.3 The M Register 22 3.1.2.4 The MsA Selector 23 3.1.2.5 The MsS Selector. 24 3.1.2.6 The sA Selector 24 3.1.2.7 The A Register 30 3.1.2.8 The sS Selector 31 3.1.2.9 The S Register 37 3.1.2.10 The sQ Selector 3.1.2.11 The Q Register 39 3.1.2.12 The sR Selector 40 3.1.2.13 The R Register 42 3.1.2.14 The R to FO Path 42 3.1.3 Standard Base 4 Pseudo Adders 45 3.1.4 High Special Adders 48 3.1.5 Low Special Adders 52 3.1.6 One Digit Assimilators 57 3.1.7 Zero Detectors and Round-Off Logic 58 3.1.8 Carry Generator , 60 3.1.9 The a Logic 65 3.1.10 The A, S, M and R Normalization Logic 67 3.1.11 Sign A and Sign Comparison Logic 69 3.1.12 The Q and R Half -Subtracters 70 3.1.13 The Carry-Borrow Logic 74 3.1.14 The Q Decoder 78 3.1.15 The u Decoder 79 3.1.16 The Division Predictors (p Decoders) 87 3.1.17 The Quotient "Bit" Recoder and the Borrow-Subtractor . . 106 3.2 The Exponent Arithmetic Unit Il6 3.2.1 A Summary of the EAU Logic 120 3.2.2 The EAU Bit Path Logic 120 3.2.2.1 The Fl to EM Path 120 3.2.2.2 The EM Register and the EM = -64 Logic 121 3.2.2.3 The sD Selector 121 3.2.2.4 The sEA Selector , 123 3.2.2.5 The EA Register 123 3.2.2.6 The ES Register and the ES to F0 Path 124 3.2.2.7 The sE Selector 124 3.2.2.8 The E Register 125 -IV- TABLE OF CONTENTS (CONTINUED) Page 3.2.3 The Exponent Adder (D-Adder) 126 3.2.U The Exponent Decoder 128 THE LINK MECHANISMS 135 k,l Gates 137 h.2 Selector Mechanisms lUo U.3 Control Status Memory Elements l^t-8 DELAYED CONTROL 15U 5.1 The Decode Sequence G l6l 5.2 The Clear Add Sequence G Yjh 5.3 The Correct Overflow and Detect Zero Sequence K 179 5.U The Load Q Sequence L 183 5.5 The Add Sequence A 185 5.6 The Exponent Arithmetic Sequence E . . . . 20k 5.7 The Store Sequence S 205 5.8 The Shift Sequence F 212 5.9 The Store Preliminaries Sequence P 217 5.10 The Normalize Sequence R 219 5.11 The Difference Absolute Value Sequence V 221 5.12 The Multiply Sequence M 222 5.13 The Division Sequence D 226 -v- 1 . INTRODUCTION The new Illinois computer is composed of four major subsystems as shown in Fig. I. The Executive Subsystem includes Advanced Control (AC) with its count- ers and interlocks, the Address Arithmetic Unit (AAU), and the Flow Gating Memory (FG). The Arithmetic Subsystem contains Delayed Control (DC), the Link Mechanisms (LM), and the Arithmetic Unit (AU). The Core Memory Subsystem presently contains a U096 word Core Memory (c) with its control, selection, and buffering logic. The Interplay Subsystem includes auxiliary storage, i/O devices, and the associated control logic. This report presents a comprehensive description of the logical struc- ture and function of the Arithmetic Subsystem. It is written primarily as a reference for those with maintenance responsibilities. As such, it does not dwell on the underlying philosophy. The reader is assumed to be familiar with the Delayed Control order code as defined in File No. U58, "Order Code for the New Illinois Computer," by D. B. Gillies. It is recommended that the reader obtain the set of drawings en- titled "Logic Drawings for the Arithmetic Subsystem." In the discussion of the subsystem logic, frequent reference is made to this set of drawings, and in par- ticular to the drawing (D-1128) entitled "Composite Flow Chart for all MAU and FAU Arithmetic Operations." Throughout the report, the drawings included in this set are referred to by number; e.g., D-1128. The following reports are recom- mended as references: File No. 319 > "Theory of Computer Arithmetic Employed in the Design of the New Computer at the University of Illinois," by J. E. Robertson: File No. 397, "A Description of the Operation of Delayed Control in Terms of Its Flow Charts," by D. B Gillies; File No. 388, "One Method for Designing Speed-In- [dependent Logic for a Control," by R. E. Swartwout; and File No. 528, "A Descrip- tion of the Logic Drawings for the Arithmetic Subsystem," by J. 0. Penhollow. -1- V t 6 0) <u > -p •H to P S 3 CO o £ <\) 3 & CO o •H CJ P p 0) CO I (0 -p £ *H 3 ^ co I o S s M •p si o c o •H •H s u o a) P crt cu .c: p •H crt O 0* £ crt 1 S -2- The nomenclature used in this report agrees with that shown on the "Logic Drawings for the Arithmetic Subsystem, " except that suffixes on signal names are usually omitted if their purpose is to distinguish signals which are logically identical hut electronically different. In line with this policy, no special attempt is made to explain the existence of logical identity elements such as emitter followers and noninverting amplifiers or cable drivers. Throughout the report, "1" and "0" denote positive and negative volt- age levels respectively. If a memory element such as Z is set to "1," its true or "1" side output -- designated z -- has a logic value of "1," meaning the z signal voltage is positive with respect to ground. In this state, the false or "0" side output -- designated z -- has a logic value of "0" meaning the z sig- nal voltage is negative with respect to ground. If Z is set to "0," z and z have logic values of "0" and "1" respectively. The parity of the signal used to set a memory element to a particular state depends on the type of memory element under consideration. It is worthwhile to note that memory elements and their inputs are generally designated by capital letters, while their outputs are des- ignated by the same letters in lower case. On this and other questions of nomen- clature, the reader is referred to File Wo. 528 as indicated above. The symbolism used to denote the thirteen basic control sequences which form Delayed Control is defined at the beginning of section 5 of this report. For example, A denotes the floating add sequence, and S denotes the store se- quence. This notation agrees with that shown on the "Composite Flow Chart for all MAU and EAU Operations" (D-1128). A word of caution is in order concerning the Boolean expressions which define conditional branching on the composite flow chart . Control takes a par- ticular branch if the corresponding Boolean expression has a logic value of "1" or equivalently if its dual has a logic value of "0." The Boolean expressions which appear on the composite flow chart are considered positive logic and their duals negative logic. Due to the nature of the control circuitry, the "branch conditions are realized with negative logic in the machine, and they appear in this form on the control logic drawings. The report begins with a general description of the organization of the Arithmetic Subsystem and its relationship to the Executive Subsystem in section 2. No attempt is made to evaluate the merits of this relationship. Section 3 contains a lengthy discussion of the Arithmetic Unit which includes the Main Arithmetic Unit (MAU), the Exponent Arithmetic Unit (EAU), and all encoders or decoders which either feed or are fed by the registers, selectors, and adders of the MAU and EAUo The Boolean expressions for each un- it of logic in the MAU and EAU are defined and discussed. The purpose and func- tion of each unit is indicated with reference to the DC order code. In certain cases the logic is analyzed to provide additional insight. It should be kept in mind that section 3 treats each unit of logic in the Arithmetic Unit as a separate entity. A particular unit may be used during the execution of many different DC orders; however, the purpose it serves may not be the same in all cases. In an attempt to illustrate this fact, the pur- pose of each unit is described relative to all of the DC orders which use it. This description generally does not include the operational details of the cor- responding control sequences. However, the half-subtractors, multiplier recod- ers, and division predictors are so specialized that their description includes some of these details for reasons of clarity. The Link Mechanisms (LM) are discussed in section k. These include gates, selector mechanisms, and status memory elements. Delayed Control governs the data flow in the Arithmetic Unit via these devices. The operation of each type of Link Mechanism is described in this context. Section 5 describes Delayed Control in terms of its thirteen basic se- quences. The discussion is supplemented with pertinent references to those -k- sections which describe the Arithmetic Unit and the Link Mechanisms., A descrip- tion of the signal flow through the decode G _, clear add B , and correct over- flow K sequences is presented to illustrate the characteristics of speed- independent control logic. The reader is referred to File Ko. 388 by R. E. Swart- wout for a more thorough treatment of this topic o -5- 2. ORGANIZATION OF THE ARITHMETIC SUBSYSTEM AND ITS RELATIONSHIP WITH THE EXECUTIVE SUBSYSTEM A block diagram of the Arithmetic Subsystem is shown on the right half of Fig. 2. The subsystem is capable of performing base k floating point arith- metic and a limited set of logical operations as described in File No. k^Q by D. B. Gillies. The input and output operand channels carry 52 bits in parallel. The first U5 bits of the operand are generally interpreted as a fraction in the range: -1 < f < 1. The last 7 bits are generally interpreted as an integer base k exponent in the range: -6k < x < 6k. Both the fraction and the exponent have a complement representation. The other data channel between the Executive and Arithmetic Subsystems carries a 6 bit Delayed Control (DC) order which spec- ifies the operation performed by the Arithmetic Subsystem. As shown in Fig. 2, the Arithmetic Subsystem is composed of three prin- cipal units. The Arithmetic Unit (AU) contains the computational logic and is divided into two major subunits as indicated. The Main Arithmetic Unit (MAU) and the Exponent Arithmetic Unit (EAU) handle the fractional and exponential calculations respectively. The second principal unit of the subsystem contains the Link Mechanism (LM) logic. This logic transmits commands from the Delayed Control (DC) to the Arithmetic Unit (AU). It may be further subdivided into gate and selector mechanisms and status memory elements. Delayed Control (DC) is the third principal unit of the Arithmetic Subsystem. The DC logic governs the data flow in the AU via the LM. A block diagram of the Executive Subsystem is shown on the left half of Fig. 2. This subsystem supervises the execution of the stored program. The other three subsystems are subordinate in the sense that they receive their ord- ers from the Executive Subsystem. The Executive Subsystem transfers command words of the stored program from Core to the Flow Gating Memory, where it sequentially examines the individual orders. It executes an order or portions of an order -6- g 8 a Pn 5* o H Gating Memory CM OO^- U"\Vp fc-CO PH pc« fe fin fe fx, [*i £ o g pq t a 1 CO +5 I o o -p CO I u ■H +» 3 <u > •H O & J! -P CI) I ■d o C\J CD P*4 -7- for which it has the capability. Otherwise, it assigns all or part of the order to an appropriate subsystem. In the latter case, the Executive Subsystem may send and/or receive a corresponding operand. Address modification, indexing, and certain control transfer orders are executed within the Executive Subsystem. All orders requiring the transfer of operands between Flow Gating Memory and Core are partially or totally executed by the Executive Subsystem. To provide a background for the detailed description of the Arith- metic Subsystem, we briefly consider the functional relationship between it and the Executive Subsystem. The reader is referred to File No. k6k, "Advanced Control," by R. R. Shively for a comprehensive discussion of the purpose and function of the Executive Subsystem and its relationship with the Arithmetic Subsystem. When Advanced Control (AC) of the Executive Subsystem encounters an order which must be assigned to Delayed Control (DC) of the Arithmetic Subsys- tem, it first decides whether the order presently held in the Delayed Control Order Register (DCR) has been decoded and initiated by DC. If so, AC transfers the new order to DCR. If not, AC may have to wait until DC completes its pres- ent order and decodes the order in DCR. If the order requires an initial op- erand, AC determines whether DC has used the operand presently held in the IN register (i.e., the Fl register of the Flow Gating Memory). If so, AC places the new operand in IN; otherwise, it must wait unless there are other orders which it may perform or assign. If the order requires a terminal operand (i.e., a DC store order), AC checks the contents of the OUT register (i.e., the FO register of the Flow Gating Memory) and its Core address in the WA register. As long as no initial operand is required, DC is permitted to initiate the store order even though the Executive Subsystem has not transferred the present con- tents of OUT to the Core address held by WA. However, DC cannot complete the store order until this transfer is made. As soon as Out Write Control (a part -8- of the Executive Subsystem) has transferred the present contents of OUT to Core, AC places the new Core address in WA. DC is then free to gate the terminal op- erand from the AU into OUT and thus complete its part of the store order. There are four special DC store orders which have initial and termi- nal operands with the same Core address. These are ASC, SSC, XCH, and SEQ. When AC encounters one of these orders, it must check and load DCR and IN under the conditions given above. If the present contents of OUT have been stored in Core, the new Core address is placed in WA and DC is permitted to gate the terminal operand into OUT. In summary, the Executive and Arithmetic Subsystems operate concurrent- ly but not in a completely independent manner. The former assigns orders and op- erands to the latter and accepts operands as a result. The Executive Subsystem has no control over the time or equipment used by the Arithmetic Subsystem to obtain a result. With few exceptions, the Executive Subsystem is capable of assigning a new order to the Arithmetic Subsystem before the latter has com- pleted its current order. As implied above, there are circumstances in which the Arithmetic Subsystem is forced to wait on the Executive Subsystem. However, these circumstances can either be avoided or minimized by careful programming. 3. THE ARITHMETIC UNIT The Arithmetic Unit (AU) consists of the Main Arithmetic Unit (MAU) and the Exponent Arithmetic Unit (EAU). These two units operate concurrently, but are physically and logically distinct. Both receive their operands from the 52 bit IN register. The first 4 5 bits of this are usually interpreted as a fraction, -1 < f < 1, and is the MAU operand. The last 7 bits are usually interpreted as an exponent, -6k < x < 6h , and is the EAU operand. The com- plete floating point operand contained by IN may be expressed as p = f • k . Floating point results placed in OUT have the same form. Both f and x are in complement representation. In the case of logical orders other than SRS and LRS, x is not used by the EAU, and the MAU interpret s f as a U5 bit word without sign. The same is true for the orders SRS and LRS except that x is used by the EAU to govern the number of base h shifts. In strictly exponent operations the MAU is not active and thus does not use f . Neither f nor x are used during the execution of store orders which do not require an initial operand. 3.1 The Main Arithmetic Unit The general topology of the MAU is shown in Fig. 3« Registers A, M, Q and R each have U6 bits, while S has k& bits. Since the two adders yield sums in base k stored carry representation, A and S also contain 23 and 2h stored carry bits respectively. Three stored carry bits are also associated with the Q and R registers to facilitate the performance of certain additions, mul- tiplication, and division. With regard to these special bits, the term "stored carry" is inaccurate, since some of them have negative weight. The bits asso- ciated with each of the five registers are indicated below. Stored carry bits are designated with an asterisk. -10- 03 ft Oj T e 03 S 5 .«* to 03 <i I CO u CO I CQ CO CQ 03 03 CQ I K I 03 ft | co 03 i. Of tr i 3 n r~! h O I C I O en to Ct] ,Q 0) 03 VO CD-* 0) I CQ O -H MCO £ £5 01 fi -p cu j- cfl -p -h -p •• CQ a) a> CQ CQ ■P tt> a 3 Io-h o * $u 3 .3 0) cd K Of U O > (x-P -11- A A 2 A i A hk A -l A A l A 2 A i-1 A i A H3 V S - 2 S S 2 S l S kk 8. 3 S - 2 S -i S o S l S 2 S l-1 S i S U 3 S UU M: M_ x M Q M x M 2 M. M U3 M^ * * * Q: Q.-l Q Q x Q 2 Qi \ x \ 2 Q U3 Q uu * * R ^2 V R. 1 \ ± \ 2 %3 V * % R; R^ R Q R x R 2 The MAU does modulo h arithmetic. The weight of a bit in the i — po- sition (stored carry or otherwise) is 2 . The point is assumed to lie "between the — and 1 — hit position, so the largest range of f that can be associated with every register of the MAU is -2 < f < 2. If the bits S , S and S are ignored, the positive limit on f in the A and S registers is less than 8/3. The limit, 8/3, is obtained by assuming an infinite stored carry representa- tion. The function of each register in the MAU is briefly described below. During the decode step (Gl) of every DC order, the gate FlgMEM transfers the -12- first hj bits of IN to M even though the order does not use an initial operand. The IN hit is mapped into M and M . The results of the previous DC opera- tion are generally held in A and Q which represent the primary rank of the dou- ble length accumulator. The S and R registers form the secondary rank of the double length accumulator which usually holds an intermediate result at the end of a DC operation. An exception occurs in the case of divide orders. At the end of any divide order , A contains the fractional quotient, Q, contains zeros, and R contains the fractional remainder. During the store step (S9) of every DC store order, the RESgPO gate transfers a modified copy of R to the OUT register, The nature of the modification depends on the store order and will be discussed in detail later. It is immediately clear, however, that a bit for bit transfer is impossible since the information contained in k6 bits of R must be stored in the first U5 bits of OUT. The two adders shown in Fig. 3 are composed of base h pseudo adder modules which are standard except at the most and least significant ends of the A and S registers. The A adder has the contents of the A register as one input and the output of the MsA selector as the other. In either case, the selector output in two's complement representation is added to the stored carry repres- entation held in A or S. A subtraction is accomplished by causing M to appear th at the selector output and then adding an extra bit, ca or cs, in the kk — po- sition. The outputs of the A and S adders are designated as C£ and a respec- tively, and are generally in stored carry representation. Let a, s, and m re- present the contents of A, S, and M. The values of Ot and in terms of a, s, and m under various M selector settings are given below. Since the M selector mechanisms have memory, the choice of a particular setting remains in effect until a new choice is made. ■13- 2 MsA: a = a + 2m MsA: a = a + m OMsA: a = a + MsA: a = a - m KgA: a = a + k The representation of a and cc may not "be the same since the adder propagates the stored carries of "a" over one "base k position „ In this notation, k denotes the output of the carry generator., As a result, QL is the as- * similated form of a: i.e., QL. = for all i. i 2MsS: = s + 2m MsS; = s + m .S: = s + CS: = s + 2 MMsS: = s - 2 KMsS: = s + The comment concerning a = a + also applies here. As a consequence of the nature of the MsS selector mechanism, the OMsS setting can only be used following a setting of 2MsS, MsS, MsS. Otherwise KMsS must be used. -kk -kk This setting is used following a setting of CS or MMsS. The fact that stored carries are permitted in A and S but not else- where, implies they must be assimilated whenever transfer to another register is necessary. The purpose of the carry generator logic is to permit the as- similation of all stored carries in A by one pass through the A adder. The carry generator was first proposed and described by D. J. Wheeler in Report No. 92 entitled "The Arithmetic Unit." In effect, it generates a carry word which may have "l's" in the even bit positions and always has "O's" in the odd bit positions. An even bit position will contain a "l" if the assimila- tion of all base k stored carries in A will cause a carry into that position. -Ik- The addition of this carry word to the contents of A yields an assimilated re- presentation of A, provided the generated stored carries are suppressed. The sAQ and sSR selector mechanisms also have memory. Once a par- ticular selector setting has been chosen by DC, it remains in effect until a new setting is made. The settings shown in Fig. 3 are easily interpreted, provided the outputs of the A and S adders are used in place of the register outputs. The effect of these settings is indicated below. The presence of &&> gQj gS and gR above the arrows implies that these gates must be active before the selector outputs can be transferred to the associated registers. 1/1+ AQsSR: l/k a S S S, l/k Q g - R OAsSR: Q S 5s, a g S R k AQsSR: k a g S S, k Q g 5. R gS gR OAsSR: 6 -+ S, a &-* R OsSR: g 5s, €r 1/1+ SRsAQ: l/k a S - A, l/k R g S Q SRsAQ: a S ^ A, R g S Q k SRsAQ: 1+ a ^ A, k R g S Q SOsAQ: a g ^ A, g S Q Since Q and R represent extensions of the A and S registers respec- tively, l/k AQsSR and gR causes a, , CCi. , and CC, , to be mapped into R , R , and R . Likewise, k SRsAQ and gA causes r (p ) and r (p ) to be mapped into A. and A, , . Similar interpretations must be made for the other options, A detailed discussion of the logical connections at the ends of the A, S, Q and R registers is given in section 3«1«2. The gate mechanisms do not have memory, so DC must activate them each time the contents of the associated registers are changed. If the gate is not activated, the register simply retains its old contents regardless of the bit -15- configuration appearing at its inputs. The two special gates which have not been mentioned so far are R • MgM and R ^ MgM. Their notation suggests their action. R • MgM transfers the zeros of R into M. The "bitwise AND of the pre- vious contents of M and the contents of R is left in M. Likewise, R v MgM transfers the ones of R into M, yielding the "bitwise OR of M and R. When R " MgM and R ^ MgM are active together, the contents of R are simply trans- ferred to M. 3.1.1 A Summary of the MAU Logic The logic associated with the MAU is completely illustrated in a series of 15 drawings. These drawings are part of the set of drawings enti- tled "Logic Drawings for the Arithmetic Subsystem." A summary of the logic shown on each of these drawings follows . "Standard A, S and M Logic" (SAS) D-170T illustrates a standard U- bit cross section of the A, S and M registers with their associated gates and selectors. The standard base h pseudo adders are shown in block form. This logic is physically located on the Q, A and S chassis of a standard MAU bay, e.g. 3F or 3R. "High A, S and M Logic" (HAS) D-1522 describes the logic at the most significant ends of the A, S and M registers down to and including bits A, , Si, and M, . Gates, selectors, and some of the high A and S end connection logic appear in detail on this drawing. The standard base k pseudo adders, and the high A and S special adders are shown in block form. The logic shown on this drawing is physically located on chassis QJF, Q6F, A8F, A7F, A6F, S8F, S7F and S6F. "Low A, S and M Logic" (LAS) D-I523 contains the logic at the least significant ends of the A, S and M registers up to and including bits A, ■16- S, and M,„. Gates, selectors and some of the low A and S end connection log- ic are shown. The standard base k pseudo adders and the low A and S special adders appear in "block form. This logic is physically located on chassis Q5R, A6R, A5R, S6R and S5R. "Standard A-Adder Logic" (STA) D-1265 includes two standard base h pseudo A-adders with their carry inhibit (Kl) gate. These adders were not realized with basic logic elements throughout. Consequently, open arrowhead inputs to AND and AND-OR complexes denotes diodes instead of transistors. The logic shown on this drawing is located on the A chassis of a standard MAU bay. "Standard S-Adder Logic" (STS) D-1266 shows two standard base k pseu- do S-adderso The comments concerning the logical symbolism on the STA drawing also apply here. The adders are physically located on the S chassis of a stan- dard MAU bay. "High A and S Special Adder Logic" (HAD) D-I526 illustrates the spe- cial adders at the most significant end of the A and S registers. Generally speaking, these adders are special variations of the standard base k pseudo ad- ders. Carry signals (c, d. , x. , y. ) to the next higher base k pseudo adders are not needed and therefore are not generated. Because of the fan-out required for the division predictors, a-logic and circular shift connections, the out- puts contain amplifiers and cable drivers that are associated with the standard adder outputs. The high S adder also provides a partial sum over the bits S , S_ , and S . Chassis A7F and S8F contain the high A-adder logic, while chassis S7F and A8F contain the high S-adder logic. "Low A and S Special Adder Logic" (LAD) D-1212, shows the special ad- ders at the least significant end of the A and S registers. These adders are considerably different than the standard adders. They were realized with basic logical elements throughout, and must generate two stored carries as opposed to -IT- a one stored carry for a standard adder. The latter requirement is a consequence of the fact that the complement carry (ca, cs) appears as a unit in the teh position. This means that four units may have to be added in the hhfh position without violating the adder relation. The significance of this will be dis- cussed later. The low A adder must also send information to the round-off logic and multiplier recoder logic, Chassis A6R and A^R contain the low A- adder logic, while chassis S6R and S5R contain the low S-adder logic. "Carry Generator Logic" (CG) D-1099 contains the logic used during the assimilation of all stored carries in A. The carry generator has the bits of A and the round-off, P, as inputs. It produces a carry word as described earlier. When the carry word is added to A via KgA, the output of the A-adder, , is the assimilated form of A. The stored carries a* which are generated during this addition are forced to zero by the carry inhibit signal, KI, which is (negative voltage) during the time KgA is active (i.e., KgA = 1 so that the carry word is added to A in the A-adder). The carry generator logic is distri- buted throughout the A chassis level of the MAU as indicated by the drawing. "Standard Q and R Logic" (SQR) D-1706 contains a standard It-bit cross section of the Q and R registers with their associated gates and selectors. R ■ MgM and R v MgM gate logic also appears. The Q level chassis of a standard MAU bay contains the logic shown on this drawing. "High Q and R Logic" (HQP) D-1525 illustrates the logic at the most significant end of the Q and R registers down to and including bits Q^ and R^. In addition to the standard gate and selector logic, most of the high Q and R end connection logic appears on this drawing. The latter includes the Q and R one digit assimilators and the logic which modifies the contents of R on the way to OUT during S9 of the store sequence. The logic shorn on this drawing is physically located on chassis Q7F and Q6F. -18- "Low Q and R Logic" (LQR) D-152U shows the logic associated with the least significant end of the Q and R registers up to and including bits Q_„ and Ro 7 « A large part of the low Q and R end connection logic as well as the standard gate and selector logic appears on this drawing. The borrow subtract- er logic which is used during the generation of quotients is shown in block form. Part of the logic which forms the inputs to Q> p and R. is shown. These bits are mode bits during multiplication, but act as carry and borrow bits re- spectively during division. The logic used to overwrite the bits in R^ Q ^ R|,(V R, , R, , R, and R, , with the bit in ES during the RESgFO gate of an SEX or- der also appears on this drawing. The logic shown on this drawing is physical- ly located on chassis Q^R, Q5R, Q6R, BUC, B^C, and B6C. The "fi and 9 Decoder Logic" (|10D) D-I506 contains the decoder logic which is used to set the MsA and MsS selectors during multiplication and addi- tion. The u- decoder is used during multiplication only. The outputs of the (iMsA logic set the MsA selector to either 2MsA, MsA, OMsA or MsA when acti- vated by a command (negative voltage signal) from control point M3 or M5 of the multiplication sequence. Bits R, , R. and R, which hold the next base 4 mul- tiplier digit and the mode bit form the inputs to the uMsA logic. Bits Q, , * Q and Q, are inputs to the uMsS logic. Its outputs set the MsS selector to either 2MsS, MsS, OMsS or MsS when activated by a command from control point M2, Mh or M6 of the multiplication sequence. The U- decoder is located on chassis Q6C The 6 decoder uses the outputs of the (h\ and (HL status memo- ry elements as its inputs. When its outputs are activated by the add QC) or clear add (Bj sequence, the 0MsA logic sets the MsA selector to MsA or MsA while the SMsS logic sets the MsS selector to 2MsS, MsS or 2MsS. Chassis Q8C contains the Q decoder. The "Division Predictor and a Logic" (DPa) D-I507 contains the logic and memory elements associated with the mechanism for predicting and recoding -19- the quotient digits and the so-called cn-logic < Utilization of the predictor logic is restricted to the division (d) sequence. The pMsA logic uses the outputs of the S-adder {o_^> o_n> o_-> > ay o > a-, and cr ) as inputs. Its out- puts set the MsA selector to MsA, OMsA or MsA when activated by a command from D7 or D10 of the divide sequence. This same command causes the quotient digit which vas predicted on the previous step (-2, 0, 2) to be transferred from the t t memory element G, and H. to the memory elements G.. and H . It also gates the quotient digit predicted on this step (-1, 0, l) into G and H . The outputs of G-! , H, , Gp and H p are fed to the quotient digit recoder as shown. Its out- puts are then transferred to R. p R. _, and R.. » The pMsS logic uses the out- * * puts of the A-adder [a, , OL , a, , OL , OL , and a ) as inputs. When activated by a command from D9 or Dll of the divide sequence, its outputs set the MsS selector to 2MsS, OMsS or 2MsS. This command also gates the quotient digit (-2, 0, 2) predicted during this step into G, and H. . The a-logic has Cfov, ocnz, no; and no; as outputs. These outputs are unreliable unless the MsA se- lector is set to KgA and sufficient time has elapsed for the A-adder outputs to settle. These outputs Indicate whether the assimilrted value of A is over- flowed, non-zero, normalized or almost normalized. The DPa logic is located on chassis A8F, A7F, S8F, STF, and A6c. The "Special End Connection Logic" (SEC) D-1527 shows various blocks of logic associated with the shift (V), floating addition (T), and division (ly sequences. The A and S normalization logic is used by the shift (f) sequence to determine overflow during left shifts. The M and R normalization logic is used by the division fin sequence exclusively. The M normalization logic is used to determine whether the divisor is normalized at the start of a divide order. The R normalization logic is used to determine when the generated quotient ap- pears normalized. The sign comparison logic is used only by the division (d) sequence. Its purpose is to compare the true sign of the partial remainder -20- in A with the true sign of the divisor in M. The result of this comparison may influence the quotient digit that is inserted in Rl q > Rj -,, and R, j . The Q and R half-subtractors are used only in case 3 of floating addition. The carry- borrow logic is used in case h of floating add (a) and for quotient round-off in the division fin sequence. Each block of the SEC logic is physically lo- cated on the chassis indicated by the drawing. The "Zero Detect and Round-Off Logic" (ZDR) D-1505 shows the logic used to detect the presence of all zeros in Q, R or S. It also shows the log- ic used to obtain an unbiased round-off of A. The output of the round-off logic, p, is always zero unless the round-off status memory element (RO) is set in the true state, in which case p may be or 1. Note that p is fed to the low end of the carry generator. The zero detect logic is distributed throughout the Q and S levels of the MAU. The round-off logic is located on the Q7F chassis. 3-1.2 The MAU Bit Path Logic The bit path logic for the MAU is displayed on six drawings. The standard bit paths are shown on SAS (D-1707) and SQR (D-1706). The non-standard high and low A, S and M bit path logic is shown on HAS (D-1522) and LAS (D-1523) respectively. Likewise, the non-standard high and low Q and R bit path logic is shown on HQR (D-I525) and LQR (D-I52U) respectively. The description of this logic will be register- and selector-oriented. Equations for the most significant, standard, and least significant bit paths are given for each of the five registers and six selectors of the MAU. The connections with the IN(Fl) and OUT(FO) registers of Flow Gate Memory are also included. ■21- 3.1.2.1 The Fl to M Path As shown at the top of HAS, SAS, and LAS drawings, the Fl. input to M. is the i — output of the Fl flow gate register. This output reflects the contents of the Fl. memory element at all times. It is transferred to M. when- 1 1 ever the FlgMEM gate is on, i.e., whenever FlgMEM =1. On the top of HAS, note that Fl n is stored in "both M and M , thus duplicating the sign hit of the in- coming fraction. 3-1.2.2 The R to M Path The logic associated with this path is shown on the top of HQR (D-1525), SQR (D-1706), and LQR (D-I52U). It is used to OR or AND the con- tents of R to M, leaving the result in M. If both the OR and AND are per- formed, R is simply transferred to M. R ^ M can be done by gating r. to M. if r. = 1, but leaving M. un- changed if r. = 0. R • M can be performed "by gating r. to M. if r. =0, but leaving M. unchanged if r. = 1. The Boolean expression for gM. is given be- low. gM. = r (R v MgM) v r. (R • MgM) -1 < i < kh It is clear from this expression that R v M is performed when R n/ MgM = 1, and R • M is performed when R » MgM =1. If R ^ MgM = R * MgM = RgM = 1, the contents of R are transferred to M. 3.1.2.3 The M Register The M register may be loaded as described in the two preceding sec- tions. Its outputs feed the MsA and MsS selector logic as discussed in the two sections which follow. Its most significant outputs, m and hl, feed the carry-borrow logic described in section 3«1«13« The m n signal is also used -22- in the conditional logic of A12 in the add control sequence as shown on D-I269. The m , itl and m signals are inputs to the M normalization logic described in section 3«1«10. The least significant bit, m, , , is gated into the most signi- ficant F-element of the EM register, El^L, during El step of the exponent arith- metic sequence. This is discussed in sections 3-2 and 5.6. 3.1.2.U The MsA Selector The MsA selector logic appears at the top of HAS, SAS, and LAS. It accepts the true and complement outputs of the M register as its inputs. Its odd outputs, b (i even), feed difference amplifiers, l' L /yj)> wnose outputs feed the A adder. Its even outputs, b., feed the fifth level of the carry gen- erator as described in section 3«1»8. The outputs of the carry generator, b. (i even), feed through difference amplifiers to the A adder. The inputs to the A adder are shovn at the bottom of HAS, SAS, and LAS. Let i = 2j and < j < 22. The odd and even outputs of the MsA se- lector are then defined as follows: b. . = m. (2MsA) v m. _ (MsA) v m. _ (MsA) l-l 1 l-l l-l t _ b. = m. _ (2MsA) v m . (MsA) v m. (MsA) 1 l+l ' 1 v ' 1 b. = b! v k. (KgA) 1 1 1 1 When j = 22, m. = m, = so the expression for bi 1 is modified accordingly. The k. signal is one of the 23 outputs of the carry generator added to the contents of A to assimilate the stored carries and round-off bit, p, when KgA = 1. The assimilated value of A or A rounded appears as the output, QC, of the A adder when the MsA selector mechanism is set to KgA. Since the selector mechanism can only be set to one option at any time, KgA = 1 implies -23- _ t that 2MsA = MsA = MsA =0, and hence b. = 0o When the mechanism is set to OMsA, 1 none of the options are active and b~ . , = b_ . =0 for < j < 22. 2j-l 2j - 3.1.2,5 The MsS Selector The MsS selector logic is shown at the top of HAS, SAS and LAS. Its in- puts are the true and complement outputs of the M register. Its outputs, t., feed the S adder through difference amplifiers shown near the center of the three drawings . The following expression for t. is uniform for all bit positions except the Urth; t. = m. ,_ (2MsS) v m. (MsS) ^ m. (MsS) v m. . (2MsS) 1 l+l v ' 1 v ' 1 v ' l+l v ' The expression for t, > is obtained by noting that m. _ = so m, = 1. The MsS selector has the largest number of options and is therefore some- what more complicated than the other selector mechanisms. (See section U„2.) Suffice it to say at this point that to achieve t. = for all i, Delayed Con- trol must request either OMsS or KMsS, depending on the previous setting of the MsS mechanism. If 2MsS, MsS, MsS, or 2MsS was the previous setting, OMsS is a valid clear request from DC. This is true even though CS may have been prev- iously requested with MsS to accomplish the NOT instruction. If MMsS was the previous setting, meaning that MsS = MsS = 1, and CS = 0, then DC must request KMsS to obtain t. = for all i. 1 3.1.2.6 The sA Selector The inputs to the sA selector logic appear at the bottom of the HAS, SAS, and LAS drawings, and are generally the outputs, o- and 0. > of the S adder. -2k- However, variations occur at the high and low ends of the A register as shown on HAS and LAS respectively. A 2J _ X = a 2 ._ 3 dASsA) v a2 ._ x (SsA) v ^ (USsA) A 2j = a 2j-2 ^ASsA) v ° 2 j ( SsA ) v ° 2 j+2 (I ' SsA) A 2j = °2j-2 (1 / US£A) - 4j (SSA) V a 2j + 2 ^ SsA ) < j < 21 A U3 = a Ul (V^SsA) - a U3 (SsA) v/ p_ 1 (dl) (1+SsA) \k = °k2 (V^SsA) - a kh (SsA) - p (dl) (USsA) A kk = a U2 (V^SsA) - a ^ (SsA) If OSsA is set, l/USsA = SsA = i+SsA = as usual. It must be pointed out that DC does not request an sA option alone. Instead, it requests an sAQ option as described in section U„2. The sAQ selector mechanism interprets this combined request and activates the appropriate sA and sQ options. Except for q and c ) the o variables in the above expressions are the outputs of the S adder as discussed in sections 3»1°3> 3°1<>^> and 3°1°5° The p , and p signals are outputs of the R one-digit assimilator as discussed in section 3-1° 6. If R Q contains a zero, r Q = 0, p = r and p = r_ . The dl signal has unit value when the DL status memory element is true. When DL is true (i.e., set to "1")? a double length (meaning A,Q or S,R). left shift is possible. When DL is true, dl = and only single length (meaning A or S) left shifts are possible. It is clear from the above equations that A, and Aii are set to zero when a left shift is performed with' dl = 0. The logic used to form o ? and a p is shown at the left edge of the HAS drawing. -25- a_ 3 = (s_ 1 ^ t_ x ) (cr) (S) v a _ 3 (cr) v s a (d) i a_ 2 = (s_ 1 v t_ x ) (cr) (5") ^ a _ 2 (cr) v s a _ 2 (d ) The cr and d signals are the true outputs of the CR and V status memory elements respectively. The a o an< ^- cr 9 signals are the outputs of the R half- subtr actor as described in section 3«l«12o The sq 3 and Sq p signals are the most signif- icant outputs of the high S special adder as discussed in section 3°1°^« We now analyze the bit configuration at the high end of S to establish a basis for some of the associated Boolean expressions. Since the S register includes S , S , and S , it may contain numbers I4.I1- 22 s . -8s a + Z s.2" 1 + Z s* 2 _2k " 3 i = -2 x k=-l 2k 32 in the range -0 < s < ~ -where the binary point lies between s_ and s as usu- al. Wc note ■* « s = -8s „ + Us „ + ks „ + 2s , + s waere ^ . 22 1 v -i y * -2k = L s.2 + L s 2 i=0 X k=0 2k If s _ is assimilated over s and s , we find s = -8(s_ 3 s_ 2 s_ 2 ) + Ms_ 2 ©s_ 2 ) + 2s_ x + s provided -8 < s < *-r. If we now require -26- -2 ( s _3© s -2 S -2^ = ^ S ® s -2^ = S -l (A) then -2 < s < r. If instead we require (s_ 3 ©s_ 2 s_ 2 ) = (s_ 2 ©s_ 2 ) ^ s_ x (B) , h lk then -4 < s <- - or 2 < s < — . In the following table, we let A = 1 and B = 1 imply the truth of the statements A and B as given above. Note that the * adder relation, s ,s =0, rules out four cases. S -3 S -2 * S -2 s -r , A B 1 1 1 1 - e - - e - - 1 - - 1 - . _ - . - - - i i 1 i 1 1 [ - e - - i - - 1 - - 1 - .. _ _ _ - - - l l 1 i 1 1 - i - - e - - 1 - - 1 - 1 - - - i i 1 i i 1 1 i i 1 1 - i - - i - - 1 - - 1 - ■■ - - - - - - From this we may conclude the following: 1+ 1 . If - - < s < 2, A is true . k 8 2. If -2 < s <- - or 2 < s < rr, either A or 8 1^- 3* If -h < s < -2 or - < s < — , B is true. is true •27- E jrthermore, s represents all assimilated bits to its left when A is true, but not when B is true. Thus, s_ 1 always represents all assimilated bits to its left when L. -3<s<2. If we assume s represents the assimilated bits to its left, a right shift into A or A,Q should place a_ 3 = a_ 2 = (e^ - t_ ± ) in k_ ± and A Q as justified in the next paragraph. A careful examination of the DC Flow Chart (D-1128) will re- veal this assumption must be valid during the following control steps: A10 for ca- ses 2 and h of floating point addition, F2 for both logical and arithmetic right shifts, and the M3 and M5 steps of the multiply sequence. In all cases, the A-adder output, a, is shifted right into S with S* 2 set to zero prior to the step which right shifts the S-adder output, c, into A. Since -1 < a < 1 is true initially, it follows that -3 < OL = a + 2m < 3 and - J < s = £ < \ . The latter range is well with- in - - < s < 2. so s must represent all assimilated bits to its left. 3 ' -1 To justify a = a =s^t,we consider the stored carry summation in the -3 and -2 positions. Note in section 3.1.^ that a* 2 is formed in the same way as the stored carry output of a standard base h pseudo adder as described in section , © t 3 (s ^ s _i t _i ) 3.1.3. '>_ 2 = ^_ 2 -*■) -_ 2 37 v-_ 2 - -_!-_!• x_ 3 = (s_ 2 ©t_ 2 )(s* 2 - s^t^) - s_ 2 t_ 2 a = s © t + x r that t . = t = t_ 1 and we have shown above that s_^ - s_ 2 = s_ 1 with s* = in the case of interest. Consequently, we have: °-2 = S -l + *-l +) "-l^l = ""I V *"1 x_ 3 = (s_ x +)t_ 1 )(s_ 1 t_ 1 ) - s^t^ = s^t^ o -3 s -l® t -l © s -l t -l = s -l v t - 1 In case 3 of floating addition, the augend (subtrahend) must be shifted :ularly left uni I I ^ s exponent is decreased to the value of the addend (minuend) ■28- exponent. To accomplish this, CL is set during the initial pass through A9 of the add sequence which permits OL — > R^ , a — > R>, and o — > <fy _, a — > Q^ . Thus, the most significant bits of the augend (subtrahend) are placed in the least significant bits of Q and R before the addition (subtraction) occurs. When it does occur, the sum (difference) is shifted circularly right until its exponent agrees with that of the augend (subtrahend). A carry or borrow may be propagated to the left during this circular shift. To accomplish this, CR is set during the appro- priate pass through A10 causing a = o and a = a to be placed in A and A . Likewise, cr = 1 causes a, = oc and a = a to be placed in S and S . The r t it a and o signals are outputs of the R half-subtractor, and the a and a signals are outputs of the Q half-subtractor as discussed in section 3.1.12 The V status memory element is set during store clear type instructions (STC, ASC, SSC), during SAL and SEX, and during the correction of the remainder for quotient round-off during the divide sequence. The uses of V during store clear and divide are explained below. The use of V during the execution of SAL or SEX is explained in section 3.1.2.12. At the beginning of a store clear type instruction, the accumulator contains the result of an addition or subtraction in the case of ASC or SSC and the result of the previous order in the case of STC. In all cases, the accum- ulator is normalized, A is rounded and stored, and Q, is corrected for round-off and placed in A. It is the last step which requires that o = so and a = so . The signals so and so are defined in section 3.1.^. The round-off bit, p, is placed in S and S during the SI step which also places Q in S and sets V. Since Q, is always considered positive, its sign bits, which appear in S and S at this point, would ordinarily be zero. If 1 p = 1, a unit must be subtracted from the -2 position of Q to correct for the th I unit added to the hk — position of A. This is easily accomplished by making p -29- the sign of Q> When Q is in S, this amounts to making s__ = s p = p* During the following right shift into A with the MsS selector set to OMsS, s > A and s > to A~ . OMsS insures that t = so that so = s _, and sg = s as discussed in section 3'1«^» Since CR and V are true, g = Gg and g = s o are placed in A and A n respectively during S10. At the end of the iterative portion of divide the shifted remainder is placed in S during the final pass through Dll. The hits in S , S , and S are significant, and must be partially assimilated and shifted right into A during Dl4. Since OMsS is set in D13, the sg , sg , g , a -, and g outputs of the high S special adder represent a partial assimilation of the bits s , s , s , s , , s and s~. (See section 3»1«^«) Since CR is set to "0" and Vis set to "1" in D13, a = Sg and a - sg are placed in A and A respect- ively during DlU. 3.1.2.7 The A Register With one exception, the inputs to the A register are the outputs, * A. and A. , of the sA selector as shown on the bottom of the HAS, SAS, and LAS 11 drawings. These outputs are gated into the A register whenever gA = 1. The A , F-element is an exception in that it has two inputs, A and a„. The a„ signal is gated into A whenever a^gA = 0. A zero signal is used since the input and grounded base of the gating difference amplifier have been reversed -- hence the solid dot gate symbol. This gate is used at the end of the (5) and (F) sequences during logical operations to insure that A does not appear overflowed at the entrance to the (Resequence , The outputs of the A register feed the A adder and the carry genera- tor. The former is discussed in sections 3»1»3> 3»1«^> and 3°1«5« The latter is described in section 3°1»8» -30- 3.1.2.8 The sS Selector The inputs to the sS selector appear at the middle of the HAS, SAS, and LAS drawings. In general, they are the outputs, a. and a. of the A adder. 1 1 > Variations occur at both the high and lov ends as shown on the HAS and LAS draw- ings. Except \ = p (AsR) v a (4AsS) s_ 2 = p (AsS) v a Q (UAsS) S -2 = a * (UsS) S 2j-1 = a 2j-3 UA ASS) V «2J-1 (QSS) V a 2j + l (UASS) S l = a -l ^ ^ k AsS ^ V q i ^ QsS ^ v a 3 (^AsS) S 2j = °2j-2 (1 ^ AsS) V ^J (QsS) V a 2j+2 (UAsS) S*. =a*.„ 2 (lAAsS)^a*.. 2 (UsS) < j < 20 S U 2 = a U0 (1 ^ AsS) V %2 (QSS) V ^ (UASS) s l+ 3 = a Ul (1//4 AsS) " %3 (QsS) " v -l (dl) (UAsS) S UU = ^2 (1 / U AsS) " ^ (QSS) V V (dl) UAsS) C = °£ 2 (lA ASS) If OAsS is set, l/U AsS = QsS = ^AsS = 0. As in the case of the sA selector, DC does not request an sS option alone. An sSR option is requested -31- and the sSR selector mechanism activates the appropriate sS and sR selector op- tions as described in section U.2. In the above equations, the a signals are the outputs of the A adder except for a, _ and a which are discussed below. The round-off, p, is used to set the S and S F-elements whenever AsR = 1. This is of no consequence except during store clear type instructions as explained previously in section 3.1.2.6. The q signals are the true outputs of the Q register including q^p * The latter must be sent to S> during the D17 step of the divide sequence in order to assimilate a stored carry that may be held in the quotient when a neg- ative quotient digit is anticipated but fails to arise before the division ter- minates. (See sections 3°1«17 and 5°13°) The v , and v signals are the out- puts of the Q one digit assimilator as described in section 3«1»6. The dl sig- nal is the true output of the "double length" status memory element, DL, which must be set to "1" to permit double length shift operations in the accumulator. The Ot and a signals are formed by the logic shown in the lower left hand corner of the HAS drawing. » a = (sa)(cr)\ v a__(cr) a_ 2 = (sa)(cr)\ v a_ 2 (cr) sa = b_ 1 ^ a _ k v a_ k 1 (SsA) The cr and X signals are the true outputs of the "circular right," CR<, and "log- ical," A> status memory elements. The a „ and a signals come from the Q half- subtractor as described in section 3.1.12. The k , = a K (KgA) signal is in -10 section 3*1°8. The SsA signal is obtained as shown on the HAS drawing. SsA = whenever the sA selector is set so that gA = 1 causes a. — — > A. . The original expression for sa was incorrect. The error was detected -32- by the Snyder program as described in File No. U8l by J. N. Snyder, D. B. Gillies, R. D. Hill, and P. G. Kruger. The logic shown above is correct and is currently in use. When CR, A, and l/^AsS are true, sec must represent all bits to the left of a, with or without KgA = 1. (KgA = 1 means that the MsA selector is set so that the output of the carry generator is added to A causing the A adder output, OL, to represent the assimilated value of A.) In this sense, sot plays the role of (s , v t , ) as discussed in section 3»1«2.6. Its function is complica- ted by the fact that A may be assimilated during the right shift into S. In any case, S . and S~ must represent all assimilated bits to the left of S , after the right shift is complete. S and S are always set to zero in this case. The sa signal is gated into the S and S~ F-elements during the fol- lowing control steps: A9 in cases 2 and k of floating addition; Fl during arith- metic right shifts that arise in the execution of STF, SIF, SEQ, or SIA; Kl if A is overflowed in the twos complement sense or if it appears to be zero; MU and M6; and D6. KgA is set during Fl, Kl, and D6 . Generally, KgA is set. during A9 unless d = -1 in which case the 0MsA decoder controls the setting of the MsA selector as discussed in section 3«1»1^« The uMsA decoder controls the setting of the MsA selector during Mk and M6 as discussed in section 3 •1*15* so KgA = 0. When KgA = 0, sa is logically equivalent to (s ^ t ). We shall consider this case first before attempting to explain the more difficult situa- tion when KgA = 1. During the first pass through A9, we are guaranteed that -1 < a < 1 in case 2 or k of floating point addition. The initial steps of the multiplica- tion sequence guarantee that -l/2 < a < l/k during Mk. Furthermore, the stored carries of A are guaranteed to be zero during Mk. During M6, the worst case limits on the contents of A are: -2/3 < a < l/3« Using the results of section 3.1.2.6, we know that a represents all assimilated bits to its left when -33- -U/3 < a < 2, and hence during A9, MU and M6 * We can now show that sec = a , ^ b . Since a _ is formed in the same a standard base U pseudo addition over the bits to the left of a (See sec- manner as any other stored carry output, the a _ and OL p signals should represent a standard base h pseudt tions 3-1-3 and 3.1A. ) a . 2 = a -2 ® b -2 ® ^ a -2 V a -l b -l^ c _3 = ( a _2 © b -2^ a -2 V a -l b -l^ V a -2 b -2 «- 3 " a - 3 © b - 3 © =- 3 Since a _ = a p = a . and b = b_ ? = b , the above equations reduce to a . = a_p = a , v b_ . In both case 2 and U of floating point addition, the shift after the addition, a + m, is to the right into S during A9 followed by a left shift into A with nothing added during A10. Thus, even though we cannot always assume b=b=b in case k addition, the bits inserted in S and S„ during the A9 step are lost during A10. This was not a problem with the S to A path as discussed in section 3.1.2.6. The shift following a case 2 or k addition from S is always straight into A. A discussion of the peculiarities of case k addition is given in sec- tions 3°1«13 and 5.5. Examination of the DC Flow Chart reveals that KgA = 1 during Fl, Kl, and D6. The correct overflow and detect zero sequence [KJ insures that -1 < a < 1 during Fl and D6. Therefore, a , represents all assimilated bits to its left. The true sign of A is a k where k represents the carry into the -1 position as defined above and in section 3«1»8» Since KgA = 1, b = * and ou. = for -1 < j < 22. Furthermore, a .. = a , © k _ . It follows that 2j - ° - '-1-1^-1 a _3 = a _p = a i =a©k =sa during Fl and D6. -3U- A little more care must be exercised in determining the expression for sa during Kl. Since KgA = 1, the assimilated contents of A are shifted right into S. The sa signal is used to set S and S Q , and should therefore represent the true sign of A. So long as -2 < a < 2, it is clear that a = a , ©k is the true sign of A and so: = a , © k , is perfectly valid. However, if a = 2, a, = 1 "but sa should be zero . The Qy, (b), Qd), (f) , (h) , (m) , and [Sj sequences may terminate with an entry to the (k) sequence. The Kl step may or may not include gating sa into S and S . We are guaranteed the following about the value in the accumulator at the entrance to Kl: -1 < a < 1 for (f) and (l); -1 < a < 1 for (d) , (m), and (s); -2 < a < 2 for A; and -2 < a < 2 for B. Therefore, sa = a_, + k_ x is valid in all cases except when the CST order is executed with -1 as the operand. It is much too expensive to detect the case a = 2. Consequently, we trade precise knowledge of the contents of A for transistors and arrive at a more subtle solution. The following observation is useful in this regard. If the sA selector is set to SsA at the entrance to Kl, then except for the entry from (BJ it is guaranteed that -5/h < a < 5/U. This guarantee also applies at the entrance to Fl and D6. Since the above range is well within -U/3 < a < 2, a is representa- tive of all assimilated bits to its left. Hence, if k . = 1, a and bits to its left must have unit value, i.e., a -,k = when -^/h < a < ^/h. The ex- pression for sa = a k can be simplified to sQ - a ,k in this case. We now show that sa = a , k represents the sign of A when Kl is en- tered from the (b) sequence. If a binary left shift is executed, BLS } k = 1 while a gA insures that a , = a^ so sa = a , , which is clearly the sign of A. Except for CSB and CST, the other instructions which are executed via the (B) sequence leave A assimilated, i.e., without stored carries, so k =1 and a -35- represents the sign of A. Both CSB and CST may leave A with a stored carry in A. at the exit from the (B) sequence. All other stored carries are zero, so the bit pattern at the high end of A is easily predicted. In fact, a , repre- sents the sign of A in all cases. Note that k , = only when CST is executed vith -1 as the operand. Since the result is a = 2, sa = a ,k =0 accurately reflects the sign of A. In case 2 of floating add the range of the result is -2 < a < 2 if the exponents of the augend (subtrahend) and addend (minuend) are equal, i.e., d = -1. Note that when d is odd, the sA selector is set to l/k SsA instead of SsA. The sign of A is determined by sa = a , © k _ , The two examples shown be- low illustrate how the sign of A may be + if a , = 1 or - if a . =0. Initial A + M Right Shift into S with KgA = Left Shift into A with KgA = 1 A assimilated at entrance to Kl { 10 1 1.0 1 1 . . . 0.0 111 . . . 1 x 1 1.1 1 1 1 o . . 1 1 1.0 oo«... 0.0 0.... 1 1 CI 1 1 1 . 1 1.0 . 1 x 1 1.0 1 1 1 . 1 1.0 . . 1 0.0 . . The resulting expression for sa is the one given at the beginning of this section. When KgA = 0, k , =0 and sa = a v "b . . When KgA = 1, b . = and sa = a ,k . When KgA = 1 and SsA = 0, b =0 and sa = a , © k . There- fore, the value of sa is correctly determined in all cases. We now examine the other variables in the equations which define the sS selector. When a case 3 floating addition (subtraction) is performed, CR must ■36- be set before the result can be circularly right shifted in A,Q. As explained in section 3.1.12, a and a are the outputs of the Q half-subtractor and are placed in S_, and S during A9. The equations which define a and CC show that they must equal a „ and a respectively when cr = 1. The LRS and SRS orders are logical shift orders which treat the assim- ilated value of A as a U5 bit data word (a , a ^kli^ without sign. When a right shift is performed, zeros are inserted at the left ends of A and S. During LRS or SRS, \ = 1 and cr = 0, so CC _ = Ot _ = 0. Since KgA = 1 during any pass through Fl including the first, Ot = 0. The sS equations show that S = if l/UAsS = 1 and X = 1. It follows that S , S , S , S ,, S^ S Q and S are all set to zero during the first pass through Fl if LRS or SRS is executed with l/UAsS = 1. Since CR, V, and OMsS are true during LRS or SRS, the equations in section 3»1«2.6 show that a ? = o 9 = ®> so A and A are set to zero during F2 if l/USsA = 1. 3.1.2.9 The S Register In all cases the S register F-elements are set according to the out- puts of the sS selector when gS = 1. The outputs of the S register feed the S adder (sections 3°1°3> 3«1«^> and 3- 1«5)? The S zero detect logic (section 3«1.7)5 and the S normalization logic (section 3«1»10)« 3 . 1 . 2 o 10 The sQ, Selector The sQ selector logic appears at the bottom of the HQR, SQR, and LQR drawings o Except for variations at the most and least significant ends, the inputs to this logic are the true outputs of the R register. Q_ 1 = o^UARsQ) v p_ 1 (RsQ) - r x (URsQ) -37- Qq = a^dARsQ) v p (RsQ) v r 2 (URsQ) C* = a* u (l/tosQ) G^ = p_ 1 (l/URsQ) v r^RsQ) v r (URsQ) Q 2 = p (l/URsQ) ^ r 2 (RsQ) v r^(URsQ) Q i = r._ 2 (lARsQ) v r.(RsQ) v r. +2 (^RsQ) 3 < i < 38 Q 39 = ^(l/URsQ) v r 39 (RsQ) v d^RsQ) Q Uo = r 38 (l/URsQ) v r^ (RsQ) - cL^URsQ) QL kl = r 39 (l/URsQ) v d^RsQ) s/ r^l+RsQ) Q U2 = r Uo (l/URsQ) - d U2 (RsQ) - r^(^RsQ) Q^ = d Ul (lARsQ) >/ r^ (RsQ) v a _ 1 (cl)(^RsQ) Q uu = d ]+2 (lARsQ) - r^(RsQ) ^ a (cl)(URsQ) If ORsQ is set, l/URsQ = RsQ = 4RsQ =0. An sQ setting is requested in conjunction with an sA setting as explained in section U.2. The q,o> q.j, and m , signals are three of four outputs of the low S special adder as described in section 3°1°5° The p_, and p signals are from the R one digit assimilator as shown at the left center of the HQR drawing „ The function of this assimilator is explained in section 3°1°6. The d, and di _ signals are from the borrow- subtr actor logic as shown in detail on the SEC drawing (D-1527). The function of the borrow-subtractor is discussed in section 3,1.17. When r^ = 0, d^ = r^ and d^ = r^ . The CT and a signals are two -38- outputs of the high S special adder as discussed in section 3«1«^» These outputs are gated into Q._ and Q, « during a circular left shift in case 3 floating addi- tion. It is only under this condition that the "circular left" status memory element, CL, is set to the "1" state, i.e., cl = 1. Otherwise, a left shift into Q places zeros in Q, and Q, , . 3.1.2.11 The Q Register * * With the exception of Q> p and Q, , the outputs of the sQ selector are used to set the F-elements of the Q register when gQ = 1. The Qk:>Q.m, signal appearing in the lover right corner of LQR is used to set Qi _ and Q. , to zero when Q. J^hh ~ ^> otherwise, it has no effect. Q^tQj,k = 1 is true during all other control steps . The signal used to set Q, p when gQ = 1 is given below. * _ _ % 2 ' r U2 ( ^^l ) V ^^Ul) V r U2 r U 3 r ^ 6 2 The first two terms of this expression are part of the |oMsA decoder logic which is described in section 3«1»15« The multiply status memory element, (i, is set to "1" during the Ml step of the multiply sequence, and is reset to "0" during the final pass through Mo. Since g p = except during division, Q, = Q, as defined in section 3«1«15 when |i.= 1. The last term in the above expression is associated with the borrow- subtractor logic as described in section 3«1«17« The divide status memory el- ement, A , is set (i.e., 5 = l) during D10 of the divide control sequence and reset during DlU. It serves a dual purpose in division as discussed in section * * t * — — 3"1«17 and 5.13« Since [x - except during multiplication, Qi = Q, = r i,p r ) 1 o r ) i ij. when 5 2 = 1. -39- The Qii signal sets the Q. i F-element when gQ = 1. It is an output of the R half -sub tractor logic which is described in section 3«1»12. The kk * Boolean expression for Q» , is given below for completeness Qi hk = (cr)(r U3 )(r^)[r^(OMsS) - s^t^OMsS)] The Q register outputs feed the sS and sR selector logic (sections 3.1.2.8 and 3»l°2ol2)j the Q zero detector and round-off logic (section 3°l-7)> the Q one digit assirailator (section 3.1,6)} the nMsS decoder (section 3.1.15 )> and the Q half-subtractor (section 3.1.12). 3.1.2.12 The sR Selector The logic of the sR selector is shown in the middle of the HQR, SQR, and LQR drawings. In general, the inputs to this logic are the outputs of the Q register and the A adder. There are variations at the most and least sig- nificant ends of the selector as usual. R_ 1 = a 1|3 (o : )(lAQsR) v a_ 1 (AsR) v q 1 ( J +QsR) R o = a^(?)(iAQsR) ^ a (AsR) v q^UQsR) R o = o^UAQsR) R l = V_ ] _(lAQsR) v O^AsR) v q (^QsR) R 2 = v (lAQsR) - a 2 (AsR) - q^(UQsR) R i = ^ i _ 2 ( 1 AQsR) - a.(AsR) - q. +2 AQsR) 3 < i < U2 \ 3 = q^UAQsR) -a U3 (AsR) - p 43 (5 1 )(^QsR) ^a_ 1 (cl)(UQsR) -ko- R Mi = V (1//1 ' QgR) ~ a l^ Ac n) ~ P[, (B-K^QsR) v a (cl)(liQcR) When OQsR = 1, l/UQsR = AsR = UQsR = as usual. An sR selector option as explained in section U . 2 . The a signals are outputs of the A adder as described in sections 3*1 '3* 3>1.^ and 3»1«5« The v , and v_ signals are outputs of the Q one digit assimi- lator which is shown in the lower left corner of the HQR drawing and is discussed in section 3»1'6. The p, and p, . signals are outputs of the quotient "hit" re- coder as described in section 3«1»17« The 5. signal is derived from the division sequence logic. As explained in section 3'1«17> B-, = 1 during D9, D10, Dll, D12. (See Divide Control Logic D6-D12, D-1272.) Since CL and kQjsR are both true during these control steps, p]_ , and pj, set R. and R, . when gR = 1. CL is set to "1" prior to the circular left shift in case 3 floating addition to per- mit (X and OL. to set R, and R, . as discussed in section 3 • 1*12. Otherwise, zeros are placed in R, and R> > when UQsR = gR = 1. d is the complement output of the V status memory element and is used to set R and R to zero during the S2 step of the store sequence, This step is used only during the execution of an SAL (store Q,) or SEX (store exponent) or- der. In either case, Q contains the least significant half of the double length accumulator. During S2 the contents of Q are shifted right into R. Since all bits of Q have positive weight, the fraction q , , q_ » . . q, , , q, must be stored with a positive sign. As Q is shifted right into R during S2, V is set so §" = 0, causing zeros to be gated into R and R . Note that V is set during S10 and that d = 1 is always true during all other control steps in which lAQsR = 1. The V status memory element serves another purpose during the di- vide sequence as explained in sections 3«1»2.6 and 5°13» 4i- jl 2 13 The R Register Except for R> p and R^j the outputs of the sR selector are used to set the R register F-elements when gR = 1„ \ 2 = ^% 1 % 2 {KeA) v %l%2 {K&k) V %fhh {K&k)] V 5 2 P U2 The term associated with the \i signal is part of the uMsS decoder. •* * » When u = 1, 5 = so that R. = R. as defined in section 3-l»15« When * 5 = 1, (i = so Ri = (3, which is an output of the quotient "bit" recoder as defined in section 3»1«17« The signal used to set R» > when gR = 1 is defined below. It is an output of the Q half- subtr actor which is discussed in section 3 « 1-12. R kh = (cr)(q U3 )(q uu )[q^(OMsA) - a^b^OMsA)] In addition to the sQ selector logic (section 3°1-2.10), "the outputs of the R register feed the FO register and the associated store logic which is discussed below; the R to M logic (section 3,1.2.2); the R one digit assimilator (section 3-1 6) J the R normalization detector (section 3-l«10)j the R zero de- tect logic (section 3«l»7)j the uMsA decoder (section 3«l«15)j "the borrow- subtractor (section 3»1*17)» and the R half-subtractor (section 3-l»12). 3-1 2 lU The R to FO Pat h The logic in the path between the R register and the FO (OUT) register is commonly referred to as store logic. It is shown at the top of the HQR, SQR, and LQR drawings: The inputs to FO are designated as r. When RESp;FO = .i , 1 is stored in FO • 1 1 r = r r v r i -10 J r = r l' ^ r r ^ r n 1 1 12 1 i r =r r i ^ r r ^ r r ^ r n 2 -1 J 02 12 2 r.' = r. (3 < i < 38) i r. = xr. v x(es_) (39 < i < UU) i i 7 - _ The n, j , and x signals are the true outputs of the N, J, and X status memory elements respectively. Since RESgPO = 1 only during the S9 step of the store sequence , the settings of N, J, and X at that time will determine the way in which R is transferred to FO. X is never true during S9 except when SEX (store exponent) is executed. The six store orders which normalize the accumulator before storage takes place are ASC, SSC, STR, XCH, STC, and STN. For these orders N, J, and X are true during the S9 step. Therefore, r = r r , r = r r v T i r p> i i r = r , r„ v r r^ ^ r, r_, and r. = r. for 3 < i < kk when RESgFO = 1. Normal - 2 -10 2 12' l l - - u ization insures that the fraction in A,Q satisfies: -1 < f < -l/k, f = 0, or l/k < f < 1. A and J are true for all six orders so A is rounded during SI. Consequently, the fraction which is stored may he in the range: -1 < f < -l/k, f = 0, or l/k < f < 1. If f does not equal -l/k or +1, then r = r , r, = r and r = r . If f = -l/k, r = 1, r = 0, r = 0, and r. =0 for 3 < i < kk . In other words, f = -l/k is stored as -1, and the exponent is decreased by one i i t to compensate in steps S5 and S7. If f = +1, r = 0, r = 0, r = 1, and r. =0 for 3 < i < kk. Thus, f = +1 is stored as +l/k, and the exponent is in- creased by one to compensate in steps S5 and S7« The STU, STF, and SEQ orders do not normalize the accumulator but they do round A on the way to R. J and N are true for STU while J and N are true for STF and SEQ. ■43- t I During S9 for STU, r Q = r_ 1 r Q , r ± = i^, r^ = r_ 1 r Q v r g , and r i r = r. for 3 < i < kk. If -1 < f < 1, r. = r. for < i < kk. If f = +1, i -' - - - ' i i -- ' - 0, r, = 0, r^ = 1, and r. =0 for 3 < i < kk. Therefore, +1 is stored ' 1 ' 2 i — — as +l/U and the exponent is increased by one to compensate in steps S5 and S7« i During S9 for STF and SEQ, r. = r. for < i <kk. Therefore, the rounded fraction in R is stored Modulo 2. SAM, SIF, and SIA store A or A shifted without normalization or round- off. Since J and N are true for SAM, the store logic between R and F0 behaves as described for the STU order , J and N are true for SIF and SIA so the beha- vior of the store logic is the same as described for the STF and SEQ orders . The SAL order right shifts the contents of Q by one base k position on the way to R and inserts zeros in R and R . J and N are true during S9, so R to F0 logic behaves as described for the STU order. However, r = r = in all cases, so it is never necessary to modify the exponent. The SRM order stores R Modulo 2. J and N are true during S9, so the R to F0 logic behaves as described for the STF and SEQ orders. This order is primarily used to store the fractional remainder, r, immediately after a di- vide order. The Modulo 2 store causes no difficulty since |r| < d/2 | , and the fractional divisor, d, is always less than or equal to unity in magnitude. The SEX order is used to store an 8 bit exponent in the last 13 bit quarter word of F0 with the sign bit, es„, duplicated in bit positions F0 , F0. „, FOi , FCK p> ^0. , an ^ L F0, » o The signals es^ through es are stored in FO. |- through FO as usual. The overwrite of r through r, , is accomplished by the logic shown at the top of the LQR drawing and defined at the beginning of this section. X is true during the S9 control step only when SEX is executed. For this order the first three quarter words of FO are generally of no impor- tance. As for SAL, V is set to "1" during S2, so R and R contain zeros dur- ing S9» Since J and N are true, bits r through v o are stored in FO Modulo 2. -kh- 3 Standard Base h Pseudo Adders The A and S adders extend over UG and hu bit positions respectively. They are composed of a high special adder, a series of 21 standard base h pseudo adders, and a low special adder. The A and S inputs to these adders as veil as their outputs are in stored carry representation. For a discussion of stored carry representation and its ramifications, the reader is referred to File 263 by J. E. Robertson and G. Metze. We now consider the base k pseudo A-adder as shown on the right half of STA (D-I265). Remember that no attempt is made to distinguish signals which are logically identical but electronically different. Let a. represent the true output of A. and let b. represent the true th output of the MsA selector OR in the i — position (i even). Note that b. de- pends on the setting of the MsA selector. In the list shown below, m. repre- sents the true output of M. . Selector Setting Selector Output Selector Setting Selector Output MsA: b. = m. 1 1 KgA : b . = k . ( i even ) b. = (i odd) 1 * The inputs to the standard base h pseudo A-adder are a. , a. 2MsA: b = m. _ i l+l MsA: b. = m. 1 1 OMsA : b. = 1 _* ,._ 2 , a. ± _ lf c., Since we are examining an A-adder, the carry inhibit 1 l-l 111 — * input (KI) also appears . The outputs of the base h pseudo adder are OL. , OL. ; — * OL. , c. , and d. ^ inhere OL. _ is the stored carry and c. _ represents the carry 1 1-2 1-2 1-2 1-2 * sent to the adder on the left. The significance of d. p will become apparent below, The addition performed may be visualized as follows: -1+5- * i ! * EL l i 6- . i-2 | i ! a. -, a. i a i l-l i | i+l l"b. . b. b. . i-I i i i+l i-2 | I i-l i ' Let c = a, v a . _"b. , and d. = a. . v b . It follows that j_ 1 1+1 1+1 1 1+-L 1+-L QE t -^®\®^ a = (a.b. v a.b.)a.d. ^ (a.b. v a.b )c. i v ii 1111 ii ill The carry into the (i-l)— position is c^ = a i b i v/ ^(a^ v a.b^. In terms of this carry and its complement we have a i-i = a i-i©Vi @c i-i a i-i = (a i-i\-i v ViVi^i-i v (a i-i b i-i v a i-iVi )c i-i The stored carry is formed as a U - I'wVi - Vl b i-l )(c l-l )(S) The carry which is sent to the next adder to the left is C i-2 = a I-2 v a i-l b i-l For convenience, the partial complement of c. 2 is also formed as d. _ = a. _ v b 1-2 i-l i-l Note that the carry propagation chain is broken by storing the carry -hG- * a. , which nrises to the right of the (i-1) — position. The c. carry can only - 'i-2 arise as the consequence of a stored carry, a. _, or the condition a. n = b. ., =1, i-2 i-1 l-l It is important to note that the condition a. p = a. , = 1 can never arise. This is quickly proven by shoving that a. 1 a. the adder relation. 0. This identity is called When KgA = 1 (i.e., when the MsA selector is set to KgA such that b. equals the k. output of the carry generator if i is even and b. = if i is odd), the carry inhibit signal KI = 0. It is clear that Ct. - under these conditions. The necessity of the KI input is explained in section k.2. A description of the standard S-adder is almost identical. The adder shown on the right half of STS (D-1266) is considered below. Let s. be the true output of S. and let t. be the true output of the MsS selector OR in the i — position. The value of t. depends on the setting of MsS as shown below. Selector Setting Selector Output 2MsS: MsS: OMsS: KMsS: m 1+1 t. = m. i i Selector Sett ing Selector Output MsS: 2MsS: t. = m. l l t. = m. _ l l+l MMsS: t. = 1 i CS: t. = i — * s The inputs to the standard base h pseudo S-adder are s. o3 s i-2' "i-1' V i' t i-±> t i' X i' y i° The out P uts axe a ±-2' ±-V °i> x ±-2' and y i-2° In this notation, a . is the stored carry and x. is the carry transmitted to the adder on the left. The significance of y. is explained below. * * S i-2 s. 1 s i-i s . 1 s i+l ;v, t. 1 1+1 * a i-2 i J i-1 ■hi- Let x. = s. vs. , t. , and y. = s. , v t. , n . It follows that i 1 i+I l+l J i l+l l+l a. = s. © t, © x. l l w i w l a. = (s.t. ^ s.t.)s.y. ^ (s.t. v s.t„)x. u i 11 ill" 7 ! i i ill The carry into the (i-l) — " position is x. , = s.t. v x.(s.t. v s.t.) i-l ii i v i i ii Using this carry and its complement we have *i-i = s i-i©Vi© x i-i CT i-i = W-A-i v ViVi^i-i v ( ViVi v »i.i*i-i )x i-i The stored carry is given "by q. „ = (s. , t. , ^s. ,t . Jx. , i-2 i-l i-l i-l i-l i-l The carry which is sent to the adder on the left and its partial complement are formed as * x. = s. v s. .t. . i-2 i-2 i-l i-l and y i-2 = S i-1 V Vl These Boolean expressions are identical to those for the A-adder ex- * cept that a- _p is not a function of KI. 3.1.U High Special Adders The high A special adder is shown on the right half of HAD (D-1526) -1*8- Its *e a . , a . , a n , a . . b_ , , I , , , and KI. Its ou * — — are a of oc , a ., a n , and a . The Boolean expressions for its oul \ re the same as those for the standard A-adder with i = 0. Since there is no adder to the left, c _ and d are not formed. The amplifiers and cable drivers providing fanout for the a , and a. signals are the only other special features of this adder The special high S-adder is also quite similar to the standard S-adder. Its inputs are s_^, s_ 2 , s_ 2 , s_ g , s_ 2 , s _ ± , s_ p s Q , s Q , s Q , x Q , y Q , t_ ± , t_ ± , _ _ _ — -* —x- t Q , t Q , m_ , m_ , m^, and m . Its outputs are so , so , sa _ 2 ^ a -2 , °-2' °-l' — — * a .j a , and a_. The Boolean expressions for a , a , and a are the same as those for the standard S-adder with i = The complements of these signals are obtained with difference amplifiers as shown on D-1526. The special outputs so _, so , and so are used only during division and store orders as discussed in sections 3 .1.2. 6 and 5.13. None of these outputs were anticipated in the original design. The need to include so and so as inputs to the pMsA division pre- dictor was pointed out by R. H. Farrell. The logic used to realize these signals was valid for all division orders and operands except for an NDV order with an operand of -1 or a VI D order with a rounded accumulator of +1. In either case the fractional division is performed with a divisor M = +1. Using the original logic, this condition gave rise to erroneous quotients whenever the dividend was such as to cause 2MsS or 2MsS followed by MsA or MsA to be selected during the division process. This error was first discovered by the group working on a slightly modified version of the New Illinois Computer at the Weizmann Insti- tute of Science at Rehovoth, Israel. As reported by M. Melman, an NDV order gave incorrect results when the initial dividend and divisor were -1. This led to the discovery of other cases. The expressions for so and so shown below are valid for all division orders and operands. The so output was created after a division error was detected by J. E. Robertson's ASMD test routine. The trouble in this case was traced to -U9- the fact that the adder relation a~a = was occasionally violated during the Dl*4- step of the divide sequence. To avoid this, it is necessary to assimilate over S , S , and S during the down right shift into A , A , and A when- ever the V status memory element is in the "1" state. (See the expressions * r\ for the inputs to A , A , and A« in section 3.1.2.6; It is most informative to develop the Boolean expressions for these special outputs separately. We shall consider the expressions for sa and so first. Since a is formed in the standard manner, the theoretical expres- sion for sa (i.e., the a output in the -2 position) is sa_ 2 = s_ 2 0t_ 2 ©x_ 2 where X -2 = S -2 V ^-l The sa signal is used only during the D7, D10, and Dl^ steps of division and the S2 step of store. Except in D7 and D10, the t. (i = -3, -2, -1, ... ) sig- nals are since OMsS is selected. In the D7 and D10 steps 2MsS, OMsS, or 2MsS may be selected. The first and last of these options require special attention, If -1 < m < +1, t = t for 2MsS or 2MsS, If m = +1, t ^ t except when OMsS is selected. The following expression for t is correct for the three selector options of interest when -1 < m < +1. t-2 ; t -l (m -i m O ) v t (m -l m ) = t -l m -l v ^O V V-A This expression is clearly incorrect if we were concerned with the MsS or MsS selector options. In that event it would be necessary to replace t_ with t in the above expression. Since the MsS and MsS options are never used in con- junction with the sa signal in the present design, the availability of the -50- t signal as compared with the t signal argues in favor of the above expret; Therefore, sa and so are formed as s °_ 2 = t s _ 2 X -2 vs -2 X -2 ] © t ^ S0 -2 = [s -2 X -2 V S -2 X -2 ] ® t -2 The term in brackets is called cy on the HAD drawing. By using the restoring EXCLUSIVE-OR and EQUIVALENCE circuits we avoid forming t and insure the proper voltage level for sa and sa _ as inputs to the division predictor. The carry signals x and x are formed in the standard manner as shown on STS (D-1266). We now consider the sa signal. This output of the high S special adder is not equivalent to the a. output of a standard S-adder except when OMsS is selected. However, OMsS is the selector option when sa _ is used in steps T)lk and S2. The theoretically correct expression for sa is ^. 3 = b_ 3 © t_ 3 © x_ 3 where x _ 3 = s . 2 t -2 -x_ 2 (s_ 2 @t_ 2 ) and X -2 = S -2 " ^l*-! Since t. signals are in the cases of interest, this expression can be simpli- fied to sa = s @ ky where ky = s_ 2 s_ 2 .51- UNIVERSITY OF ILLINOIS LIBRARY 3«1«5 Low Special Adders These adders were designed for the least significant base k digital position of A and S. The following bit configurations must be examined in this position. * J * i %2 %h ' a U3 %h ' b ^3 ca | a U 2 a a hk a, k3 "kh L -l * «0 S U2 * * r o S h 3 S kk r -l r o \i cs °k2 o. * i+3 °kk The variables q. and r. represent the true outputs of Q. and R. . Bits 11 11 (ca) and (cs) are the complement carry bits which must be added in the Im- position when doing a subtraction of M or 2M from A or S in complement arith- metic. It was noted earlier that ca = 1 when the MsA selector is set to MsA, and that cs = 1 when the MsS selector is set to MsS., 2MsS, or CS The low special adders are designed such that the adder relation is nev- er broken within the limits of A and S provided a^ = s, < = prior to a subtrac- tion and left shift) and such that a carry can never arise from Q or R, i,e», q_,q q = r -, r n r = 0. A subtraction followed by a left shift can only occur in division during the transfer from A to S. The subnormalization step prior to the iterative loop of divide sets a> i = and therefore precludes the possi- bility of a broken adder relation within the limits of A and S. The adder rela- * * tion may be broken between a* . and q or s, , ■ and r ; however, this is of no concern, since the second restriction prevents a carry from propagating into the kb — position from Q or R. ■52- , nth The cases of interest are those involving four units in the 44 — position, The outputs of the special adders in each of these cases are shown below. * & 44 a U3 \h \3 ca %2 * a U3 a kh (1) 1 11 I 11 1 1 1 00 (2) 1 01 01 1 00 (3) W i ii 01 i i 01 1 01 11 1 1 01 * %h s ^3 s kh % cs * * °k2 a 44 %3 °kk ■X- -X- In cases (l) and (2), a i and ™ j, equal as they do in all cases where th fewer than four units appear in the 44 — column. In case (l) the two units in rd the 43 — column generate a carry input to the standard base 4 pseudo adder over -* bits 40 , 41, and 42. Therefore, the outputs of the special adder do not re- flect the presence of these two units. In cases (3) and (4) the outputs of the special adder must represent a sum of six units without violating the adder re- lation. This is accomplished by allowing a stored carry to appear in the 44— position of the adder output. If a right shift follows the subtraction indi- cated by (3) and (4), the restriction q , q o 0. o - or r ^ r = is clearly satisfied. A left shift following either of these subtractions could result in a vio- lated adder relation in S or A. For example, if q , =1 and a, . = 1, then a left shift into S would produce a 44 -> sj^ = 1 and q_ 1 -> s, _ = 1 such 43 that SipS, p 0. This is why a« > and s. , must be at the start of any series of subtractions and left shifts. Since r -,*" r - q %Sif) - 0; it is possible to assimilate q^ or r during the left shift into S or A such that > Si < or > aii . (See section 3«1»6.) Therefore, the requirement that -53- * * a> . => s. . = at the start of any subtraction and left shift sequence is suf- ficient to guarantee that the adder relation will not be violated within the limits of A and S. If the subtractions indicated by (3) and (h) are followed by a straight shift into the next register (which must be from S to A), a> ^a •, ^ay n ot be identically zero. This could cause trouble if it were followed immediately by a subtraction of type (3) or {k) and a left shift into S. This subtract- shift pattern does not occur in the present realization of Delayed Control, The general add-subtract-shift patterns which do occur are outlined below. Cases 2 and k of Floating Add S © Case 3 of Floating Add © General Step of Multiply ® Last Step of Multiply -5U- General Step of Divide © Remainder Round-Off Connec- tion © The truth table for the low special adder is shown below. The Ci _(x, ) function represents the carry into the ^3 — position. The outputs \^%2^* a ^3^ a l+3^ C U2^ X ^2^ and d U2^ y U2^ are formed in the st an dard manner * * * a U3 \3 %k \k %h ca a hh a kh C k 3 ^2 a k2 * * -* %3 \3 %h \h S U1+ cs °hh a kh X ^3 \ 2 ( \2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ,, ' 1 1 1 1 , 1 / \ / 1 1 1 1 c ) ] 1 1 1 1 1 1 1 1 ( ) ] 1 1 1 1 1 1 1 1 ( ) ] 1 ] - 1 1 1 1 ( ) ] ■55- The a outputs may "be expressed as follows: a kk = ki, a ikV ca) '[>3®v] a kk " \\k®\k®%k® ca \ % 3 = % 3 ®\ 3 ®% 3 [ a lA a wV (ca) J " i % 3 ®\ 3 OL k2 C: ^3 % 3 ®\ 3 \h @ %h \ 3 ^ %h%k\h ica) \k v ca * — t v %h%k\ \h v ca ' I a i^ a ^V (ca } ' a 44 b M^ ca ) % 3 ®\ 3 Note that unless a. > a< Jd, , (ca) = 1; the special adder performs the same function as a standard base k pseudo adder « The logic used in the physical realization of the low A special adder is given below. It is in agreement with the logic shown on LAD (D-1212). oc kk a uiAiiV ca) \ 3 \ 3 - % 3 \ 3 j a kh _* _ * v/ a hk a '43 a U2 '43 U ) 0(\ u - ca) (b uu - ca) ©<4 3 # [% 3 \ 3 N ' a 4 3 b 4 3 J (c 43 )(Kl) " a UU a UU b UU (ca) «t ^. -x. , (%k%h " a UAU )( \u v ca) v a 4>AU ( V v ca) v a uu b W a 4 3 \ 3 v a 43 b U 3 v a Ul+ a ^ b ^ (ca) a j 43 \ 3 ^ a 4 3 \ 3 '42 a 42 V a U2 b U2 d U2 = a 4 3 v b U 3 — * Note that KI does not appear in the expression for a. , since b. . = when the MsA selector is set to KgA. The expressions for the low S special adder are obtained by making the following substitutions: a = 0L } x = c, y = d, s = a, t = b, and cs = ca. The — * KI variable does not appear in the expression for u. . 3.1.6 One Digit Assimilators The Q and R one digit assimilators are shown on the left side of the HQR drawing (D-I525), They each consist of a two input OR and a two input AND, Their function is to assimilate the stored carries which may appear in Q and R»„ This is necessary for two reasons. If a left shift occurred without assim- ilation^ the adder relation might be violated. If a right shift occurred with- out assimilation, Q. and R. memory elements would be needed. A subtraction of M from S followed by a right shift maps a, into Q„, hk = X and % (See section 3.1^2,10,) If the subtraction is case 3 or h } 0,1 =1 and Q, = 1 following the shift. This is the only way to set Q = 1. Similar statements * are valid for R . Since there is only one bit configuration for Q, , Q, , and Q, which u _ 1 , ^ Q , - ^ Q = asRirrn'T at.nnn i a ^r&r^r ci'nrnlp TVip rm+.Tm+. permits Q = 1, assimilation is very simple. The output of the low S special -x- adder is such that if a = 1 following a left shift, then q = 1 and q = 0. Assimilation yields and V.! - <!_! - % _# V = %% For R we have P-i = r -i r o -57- and P = Vo If the stored carry is zero in either case, the outputs of the assimilators agree with the respective bit positions of the Q and R registers. 3.1,7 Zero Detectors and Round-Off Logic This logic appears on ZDR (D-I505). The S, R, and Q zero detectors are large OR trees. Their outputs SZ, RZ and QZ are zero when the respective registers contain all zeros, SZ = S v- s_ ^ S n ^ ---• \s s, _ V Si , -o 1 43 44 RZ = r . ^ r^ ^ r n ^ ^ r, _ v r n -10 1 43 44 QZ = V_ x - V Q - q x _ U2 where q i-42 = *1 " % ^ """"" %1 V q 42 In order for SZ to he valid, the stored carries must be assimilated „ The same would apply to RZ and QZ with respect to the carries or borrows stored in the 42 and 44 positions; however, these bits are always cleared to zero at the time RZ and QZ are inspected. A unit in R n would not cause RZ to give a false indication, since there would also be a unit in R as discussed in the preceding section. The formation of QZ is slightly different for two reasons „ First of all, Qi _ and Q, 1 are always cleared to zero during the decode step (Gl) of any DC instruction and during K3 of the correct overflow sequence, OQ, for SSC, ASC orders. (See sections 3.1.2.12 and 5.1.) In all cases, the QZ and round-off logic outputs are inspected by DC before any units have been gated ■58- into Qi 3 and Qi )• This justifies the omission of qi _ and q,« in the expression for q, i _. The expression for QZ would be just as valid if q and q^ were used in place of V and v for the reasons discussed in the preceding section. The V and v n signals are necessary inputs to the associated round-off logic, so it was convenient to use them for the formation of QZ as well. Note that cable drivers and difference amplifiers are used to distri- bute the true and complement outputs of the zero detect logic. The control points of the DC sequences which use these outputs are indicated in the "Refer- ence Logic" line of the output table. The round-off logic is shown in the lower right corner of ZDR (D-1505) Its inputs are q «_, V . f v , an ©an , and ro. Its output is the unbiased round-off bit p. p = (ro)(v_ 1 ) (a kk ®a kk ) - V Q - q ± _ k2 As discussed earlier, p = if the round-off status memory element RO is set to RO, in which case its true output ro = 0. Prior to a round-off operation, DC must set RO causing ro = 1. In this condition, p may be or 1 as defined above. It is added to the kh — position of the A register as a car- ry into the low end of the carry generator. (See section 3»1«8«) The round-off carry and the stored carries of A are assimilated via the carry generator and A-adder when KgA is true. The rounded and assimilated result appears at the output of the A adder and is transferred to R in all cases Following this transfer, DC sets RO to insure that p = 0. The rules for unbiased round-off are stated as follows, where the binary point in Q is assumed to lie to the left of Q . r if Q < 1/2 [or if a. . © a*, = and Q = l/2 ■59- if Q > 1/2 or if a. . © a. . = 1 and Q = 1/2 Since cu = q_ = 1 may occur, it is necessary to use the outputs of the one digit assimilator v , and m together with q . in determining the range of Q. The Boolean expression for p given above is seen to agree with these round-off rules. Note that a^ © an is formed in the low A special adder as a^a^ ^ %k%k° 3.1.8 Carry Generator The carry generator logic is shown on CG (D-1099)° It is used in conjunction with the A adder to assimilate the stored carries in A and the round-off bit. The inputs to the carry generator are p and all the hits in A except a . Because of the manner in which the KgA gate signal is introduced, the fifth stage of the carry generator logic also includes a part of the MsA selector OR logic for the even-numbered bits. As a consequence, the b. (i even) are also inputs to the CG. This is illustrated in the upper left corner of the CG drawing. The expressions for the outputs of even and odd-numbered MsA selector-OR s are given below. b. = ('MsA)m. v (MsA)m. v (2MsA)m f 1 odd 1 b. = b. v (KgA)k. 1 1 ^ 1 > where ? 1 even 1 b. = (MsA)m„ v/ (MsA)m. v (2MsA)m. . 1 1 'l ' l+l The flattened OR symbol is used when i is even to indicate that a non- standard OR circuit is employed. The k. signals for i even are the true outputs •60- of the carry generator even though they are not shown explicitly on the CG draw- ing. Since b. = b. ^ (KgA)k. is accomplished in the fifth stage of the CG, the outputs shown are the b. . Note that b. = b. when KgA = 0, i.e., when the MsA selector is set to something other than KgA, However, when KgA = 1, b. =0 and b. = k. if i is even and b. = if i is odd. The k. as used here does not equal 11 l i K. as shown on D-1099- The K output is used in the sign A and sign comparison logic which is discussed in section 3«1«H« The k , output is used in the high A bit path logic as discussed in section 3-1-2.8. Do J, Wheeler designed the original carry generator as described in Report 92 • Its use permits the assimilation of all the stored carries in A and the round-off bit, p, in one pass through the A adder with KgA = 1. To accom- plish this, it is necessary to generate the carry, k. , that is introduced in the least-significant position of each base h pseudo adder when all of the stored carry bits of A and/or the round-off bit are added to the non-carry bits of A, In order to have a carry into the i — position (i even) there must be a stored carry bit or round-off bit and a non-carry bit in the (i + j) — position (j ev- / \ +h en r 0) which is propagated into the i— position by a continuous series of nonzero bits between i and i + j. When j = 0, the carry into the i — position is zero; however, there may be a stored carry in that position. The general Boolean expression for k. is given below. Note that a^ is not included. U2-i * * t \ * k. = a. ., a, a. _ ^ a, , a. _a. _a. 1 a. » v • • ° -^ \ II a. Ja, 1 l+l i+2 i+2 i+1 i+2 1+3 i+k i+h \-l kk-i ' I- ( n a, +k )(a^ - p) k=l Since the adder relation, a, a, , = 0, must always be satisfied, the terms in the general expression for k. are orthogonal. That is, if k. = 1, one -61- and only one of the AND terms on the right side of the equation has unit value. * The (a j ^ p) term deserves special attention . Since the adder relation may be * , rd broken between A and Q, ai jl = p = 1 may occur. A carry into the 4 3 — position * will arise if either or both of an and p have unit value. Another unit is added to the kh — position if and only if p = 1. Hence, k> , = p. The physical realization of the k. functions is in terms of generate and propagate conditions as expressed below. For convenience, these functions are chassis-oriented and therefore span two base k positions in the first and fifth levels. First-Level Logic Carry Generation: G, = a* . v p = kj. (As shown on D-IO99) Carry Propagation: P, . _\ . = a. _a. „a. n a. (i-3)-i 1-3 1-2 l-l 1 * * Carry Generation: Q, . _\ . = a. 1 ^ a. _a. ~a„ _ (,i - 3)-i i -i + i"3 i-2 i-2 where i = Uq and 1 < q < 11. Second-Level Logic G 33-^ :: G 33-36 v P 33-36 G 37-^0 v P 33-36 P 37-^l-^ y ? 33 - 3 6 F 31-ho P kl-hk% P 21-32 " P 21-2^ P 25-28 P 29-32 G 21-32 : G 21-2U " P 21-2U G 25-28 V P 21-2^ P 25-28 G 29-32 P - P P P 9-20 ' 9-12 13-16 17-20 G 9-20 G 9-12 v P 9-l2 G l3-i6 v P 9-l2 P l3-i6 G l7-20 -62- Third-Level Logic G 2l-U5 ;: G 21-32 s ' P 2l-32 G 33-^5 G Q-l+5 = G ^ P G ^ P P G , 9-20 9-20 21-32 9-20 21-32 33-U5 Fourth-Level Logic G ki-k5 = G Ul-i+U v *ki-kk G k5 G 3T-^5 = G 3T-^0 v P 37-^0 G Ul-l+U ^ p 3T -Uo P l+l-^ G l+5 G 29-U5 = G 29-32 v P 29-32 G 33-^5 G 25-U5 = G 25-28 v P 25-28 G 29-32 v P 25-28 P 29-32 G 33-U5 G l7-U5 = G i7-20 v P lT-20 G 2l-U5 G i = G /- v p ,Q sy p .p G i 13-^5 13-16 13-16 17-20 13-16 17-20 21-^5 G 5-^5 = G 5-8 v P 5-8 G 9-^5 G lA 5 = G l-* v P lA G 5-8 v P l-U P 5-8 G 9-U 5 Fifth-Level Logic The following set of carry generate signals have "been formed in the gt nd_ x'd. "tli 1 — , 2 — , 3 — , and h— levels . K. = G/ . \ . ^ where i = kq and < q < 11 « To th obtain the carry into the i — ■ position, k. , where i = kq_ and < q < 10, we form _■*- k = a.K. and k, , = p ill kk ^ Likewise, to obtain the carry into the (i - 2) — position, k. , where i - kq_ \ and 1 < q < 11, we form ■63- k. = a. ,a.K. i-2 l-l 1 i The significance of these expressions becomes apparent if we exam- ine two special cases of the general carry equation. We know that k. and k, may be expressed as follows: \ 2 = %3%k {& lk v p) The implicit outputs, k, _ and k, , can be written in terms of K, and K, i*e- %q ^ A k2 kO auu %2 spectively. ho = %oho = a 4o (G Ul-W v P 4l-WV k U = a J *V) v a Ul a U2 a U2 v a UA2 a ^3 a ^ (a ^ V P) _* Since a^a^ = 0, we have a^a^, = a^. It follows that a Hl a U2 a U2 v \i a U2 a U3 a UU (a l+U k],o = : a n ,a )i0 a )i0 s< a,,, a lin a )l0 a )l)l (ai 1 , 1 ~ p) In terms of K, we have k U2 = a U3 a i^V = %3%h% = % 3 %k(%k v p) _* It is easy to generalize these arguments to show that k. = a.K. or ill k. _ = a. , a.K. for all even i in the range < i < k2. i-2 l-l 11 ° - - t The KgA gate and b. signals are also introduced in the fifth level, The principal outputs of the carry generator are expressed as follows: b. = b. v k.(KgA) l l l ■6k- \-2 - b i-2 V \JW) where k. and k. _ are defined above. Because of the action of the MsA selector, 1 1-2 t b. = when KgA =1, so b. = k. when KgA = 1. The outputs K and k are used in the sign A logic and high A bit path logic respectively. The K n = G . signal is formed as indicated above, while the k , signal is generated as k -i = ( a K o )KgA The choice of k as a symbol to represent this signal is unfortunate since in general K. = G,- . \ , for i even. Note that when KgA = 1, k , represents the carry into the (-l) position. 3°1°9 The a Logic As shown on the right side of the DPa drawing (D-1507); the OL logic is fed by the a , OL , OL } OL a and a. outputs of the A adder. Its outputs are i Ctov, Onz, nCK, and no: with their complements. These outputs are distributed to the various control sequence steps as indicated. It is important to note that these outputs are meaningful if and only if KgA = 1 and sufficient time has elapsed to permit the carry generator and A adder to react. Under these condi- tions, the A adder output, OL } represents the assimilated value of A with or with- out round-off o The Boolean expressions for the four outputs are given below. ccov = a a s/ a _i a o If Ctov = 1, a is overflowed Mod 2, i.e., OL ^ a anz = [(a^a )(a_a^)] .65- If Cttiz = 1, a is nonzero since at least one of the outputs a , a . OL , a , and a, has unit value. na = [oL OL ± a 2 v OL Q a^x 2 ) 7 117 If na = 1, -I7< Q;< "I7orr<a<r. If aov = when na = 1, then -l<a<-rorr<a<l which corresponds to the normalized range of OL except that OL = is not included. Therefore, even though na is associated with the normalized a condition, it does not always imply this condition. na = a a x a 2 (a 3 ^ a^) v a^a^a ^ a^) If na = 1, then a lies within one of the following ranges §<«<-§ -*<-<-& 1 ^ ^ 1 28 ^ ^ 31 JE^ a< h lS^ a< S • 1111 If Otov = when na = 1, then - r < OL < - -ry- or TZ S. a < 77* Therefore, the condition (aov)(na ) = 1 implies that a will be normalized after one base h shift to the left. In many cases when na and na are sampled, it is known apriori that a is not overflowed. This is true in both the normalized (r) and shift (f) se- quences as a consequence of leaving the accumulator in a non-overflowed state at the end of every Delayed Control instruction. Note that aov is not used in either the \RJ or \FJ sequences. In the store (s) sequence, aov appears in conjunction with na because round-off may cause overflow. These considerations are also discussed in the sections which deal with the (jy , Cly> and [SJ control sequences. -66- 3 . 1 . 10 The A, S, M and R Normalization Logic These individual blocks of logic are shown on the upper half of the SEC drawing (D-1527). The Boolean expression for each is given below. na = a a a v a„a, a_ 12 12 ns = s oSl s 2 - s oSl s 2 mn = m m m v m m m nr = r r r ^ r r r 12 12 If any of these expressions has unit value , the contents of the corresponding 7 117 register must be in the range - r- < f < - y- or y- < f < y-. If it is also known that the register does not hold a number which is overflowed Mod 2, then f must be in the normalized range: -1 < f < - y- or y- < f < 1. The na and ns outputs are valid only when the stored carries in the A and S registers are assimilated.. These signals and their complements are used in the shift ( S) sequence exclusively <> Because the accumulator is left in a non-overflowed state at the end of every Delayed Control instruction, the con- dition that na = 1 or ns = 1 implies that the number contained in the A or S register is in the normalized range. The nm and nr signals and their complements are used only in the division (in sequence. (See section 5° 13°) The DIV and NDV orders place the divisor in M as the initial operand. Therefore, it cannot be overflowed in the fractional part. It follows that if mn = 1, the divisor is normalized. The VID order obtains a divisor by normal- izing the accumulator and then rounding. As a result, the fractional part of the divisor which is placed in M is either zero or in the range r- < |f | < 1. -6 T - Thus M may contain a f = - r or +1. If f = - j-, nr = 0; while if f = +1, run = 1 since f looks like -1 to the mn logic. This situation does not cause trouble in the VID because the x signal masks nm at the D2 control point. (See DC Flow Chart D-1128.) For any divide order the nr signal is used to determine when a "nor- malized" quotient has been formed. The condition nr = 1 causes an exit from the iterative loop (control points D10 and Dll). At the time of exit, R may or may not contain an assimilated representation of the ■unrounded quotient. There may be an effective stored carry in the "R^ n " position which would be absorbed as soon as a negative quotient digit (bits i\ p > Pho> an ^ P),), ) is generated and %k- ed in R f G , R, -, and Rj . The "R, " memory element does not exist; but if l k2> "43 j 44 40 it did, it would contain a carry bit under certain conditions during the gen- eration of a quotient. If "Rj, n " contains a carry and a nonzero negative quo- tient digit does not arise before the division terminates, the carry remains and must be assimilated to obtain the true representation of the unrounded quotient, (A detailed explanation of quotient generation is given in sections 3.1.17 and 5°13°) The point of interest here is the fact that the bit pattern in R , R and R may change if the effective carry in "R, " were assimilated. 0' 1 40 This change would also cause nr to change in the cases shown below, R Bit Po- sition P. = - 1 4~ '■ R = +1 -1 0. 1 2 3 4 1 1. 1 1 1 0. 1 1 0. 1 1 1 1 1. 1. 1. 39 40 "40 " 41 42 42 ^3 1 1 1 1 1 1 1 1 1 1 1 1 44 R, contains a stored borrow in these cases, but it must be ignored since both Ri _ and R, , contain zeros, which means the last quotient digit generated was a negative zero. -68- In the first and third cases, nr = 1, but the unrounded quotient is not normalized since R = - r- or +1. In the second case nr = 0, but the unrounded quotient is in fact normalized, since R - + — . Since nr = another pass through the divide loop occurs. If a negative quotient digit is not inserted during this pass, case 3 will arise. None of these cases causes any difficulty, since - -r and +1 are both valid unrounded quotients. The effect of rounding is con- sidered in section 5«13« I n all other cases, nr gives a true indication of whether or not the unrounded quotient is normalized. 3.1-11 Sign A and Sign Comparison Logic This logic is shown in the upper right corner of SEC (D-1527). As its name implies, it is used to obtain the true sign of A and to compare that sign with the sign of M. Since the K output of the carry generator is used, the MsA selector does not have to be set to KgA to obtain the true sign of A, This is of no consequence as far as the use of the Sign A signal is concerned; however, it is a necessary requirement for generating the sign comparison sig- nal, 7, during the divide loop. Sign A = a_l © a K Q = a -l a o K o The true sign of A is always taken as the assimilated value of a , Since a n K represents the carry into the A position under assimilation (see section 3>l-8)> Sign A can be expressed as shown above. 7 = (Sign A)m ^ (Sign A) m The sign of M is always determined by the contents of M , . If A and M have like signs, 7=1. Since the sign comparison signal, 7, is used only during division, the signs of the partial remainder in A and the divisor in M -69- agree if 7 = 1 and disagree otherwise. An explanation of the use of 7 is given in sections 3»1°17 and 5»13» 3 . 1 . 12 The Q and R Half -Subtracters The Q and R half-subtractor logic is shown in the lower left corner of SEC (D-1527). These half-subtractors are used only in case 3 of floating addition. In this case, the exponent of the augend (subtrahend) is larger than the exponent of the addend (minuend) so the fractional portion of the aug- end (subtrahend), AQ, must be circularly left shifted until the exponents agree. The accumulator is assimilated during the first transfer from A to S in this shift process. This places the most significant bits of the augend (subtrahend) in the least significant portion of the Q or R register at the time addition i subtraction) occurs. As a consequence of this addition (subtraction), a borrow or carry or neither may be generated in the (-l) position. If a borrow is generated, the Q and R half-subtractors are used to propagate it into the most significant bits of the sum (difference) during the circular right shift into AQ, The Q, i and Ri , memory elements alternately hold the borrow during propagation. If a carry arises, the high A and S special adders (section 3°1°^) propagate it into the most significant bits of the sum (difference) during the circular right shift into AQ. A and S alternately hold this carry during propagation. Whenever a borrow is not generated at the time of addition ( subtrac- ' ' ' ' tionj, the oc , QL and a o> o_ P outputs of the Q and R half-subtractors are simply copies of %?> %], and \n> r kk> anc ^" ^ e Qkk and R, 1 memory elements are always set to zero. In any case the a. and a ( a ^ and o P ) outputs of the Q (R) half-subtractor are used to set S and S (A and A ) during the circu- lar right shift. (See sections 3.1.2.8 and 3.1.2.6 for bit path details.) •TO- Q Half -Subtrac tor Logic # ma = q, ^(OMsA) v a^b (OMsA) a 3 = ^3 © (% h )(*a_ 2 ) - ^1+3 ® C3 -U^ (n °-2 ) a _2 " V © ma _ 2 = V ® ma - R* u = (cr) (q^)(q ul+ )(i^_ 2 ) R Half-Subtractor Logic * m a_ 2 = r uu (OMsS) v s_ 1 t_ 1 (OMsS) °-3 = r l^ 3 © ( r ^l + )(ma -2 ) = r U3® (r © (ma © a o = r © m °_ 2 = r UU© mCT - V = ( cr )( r U 3 )( r ^)( m a_ 2 ) These expressions are best understood by analyzing a case 3 addition (subtraction) in the (-l) column. Assume that at the end of the circular left shift, the most significant bits of the augend (subtrahend) lie in the least significant bits of the q(r). The addend (minuend) in M is added (subtracted) to that portion of the augend (subtrahend) that is in A(s). The result is cir- cularly right shifted one base k position into SR (AQ). This is generally only the first of many circular right shifts. At the time of addition (subtraction), -71- the augend (subtrahend) is always assimilated in A(s) because KgA = 1 during the first circular left shift. (This is clearly necessary since Q and R cannot hold stored carries.,) The a , (s ) "bit has positive weight in this case. The b , (t , ) bit has negative weight as usual. Let c (x ) be the carry into the a (s ) position. Let OL (a ) and a (a p ) be the sum and stored carry bits as usual. Let (3 (t p ) represent the borrow from the -2 position. Expressions for Q£_ 1 (a_ 1 )> a _2^ a .o^ > and ^-2^ T -2^ in terms of a _i^ s _i^ ^-l^-i^ and c (x ) can be derived from the truth table shown below. Keep in mind that a _(a P ) are formed as in any standard base k pseudo adder. (See sections 3.1.3 and 3.I.U.) Weights: +2 -2 +2 +2 +k Variables: a_ x (s_ 1 1 1 1 .1) b -A 1 1 1 1 1) c_ 1 (x_ 1 1 1 1 .i> a .A 1 1 1 1 .1) * 1 * \ 1 1 1 1 a _l = a _l © b _ x © c _ x CT -1 = s -l ® t -l ® x -l a -l = ( a _l © b _l) c ._l °-2 = ^ S -l ® t -l' )x -l P-2 " a -l b -l T -2 " '-l*-! Note that the equations for a ( a ) and a ( a p ) agree with those given in sec- tion ^.l,k. During the first circular right shift into SR (AQ) the MsA (MsS) selecto: ■7 P- is set to MsA ( MsS) or MsA (MsS) while the MsS (MsA) selector is set to OMsS (OMsA) . On the second circular right shift, MsA (MsS) is set to OMsA (OMsS) . Thus, if %3 = q kk = o ( h3 r, . = 0) during the first circular right shift into SR (aq), the borrow is propagated and must be stored in R, > ^kk^* # -x If r^ = ? ]+k =0 and R^ ,■ 1 (q^ = q^ = and Q^ = l) during the second cir- cular right shift into AQ (SR), then the borrow is again propagated and must be ■x- -x- stored in Q^ ( R i^) * It follows that a unit no p (ma p ), must be subtracted from %y \k ( r ky r k0 if P -2 = ! ( T _ 2 = X ^ and 0MsA = 1 (° MsS = ^ or -x -x- q, , = 1 (r, , = l) and OMsA = 1 (OMsS = l). The corresponding Boolean expres- sions for ma and ma p were given above where (3 = a b and t = s t . Note that a ,b _ ± (OMsA) (s_ 1 t_ 1 (0MsS)J determines no ( m a Q ) on the first -2 circular right shift into SR (AQ); and that q, , (OMsA) ( r , , (OMsS)) determines no p ( m G p ) on every odd circular right shift after the first. The equations for the half subtractor logic can be derived from the following truth table. c lk3 (r k3 ) q kk (r W ^_ 2 ( m a_ 2 ) 1 1 1 1 °L 3 < a„ 3 ) 1 1 1 1 a _ 2 ( a - ■2> vKk) 1 1 1 1 1 The cr signal, i.e., the true output of the CR status memory element, is included in the expression for setting R, 1 and Q, . in order to clear these memory elements to zero when they are not in use. The CR memory element is turned on (i.e., set to "l") at the beginning of a circular right shift and •73- when the shift, is completed.. The circular left and right shift •* facility is used only during case 3 of floating addition- Therefore, R, > -* and Q) , are always set to zero except when a borrow is being propagated dur- ing a circular right shift following a case 3 addition, (See section 5°1°) 3.1.13 The Carry-Borrow Logic This logic appears in the lower right corner of SEC (D-1527). In case u of addition, it is used to detect and temporarily hold a carry or borrow into the most significant half of the sum or difference. In division, It is used to detect and hold the result of a sign comparison between the di- visor and the final partial remainder. (The final partial remainder is not the same as the remainder which is left in R at the end of any division. For details see section 5»13») The input to the CB memory element will be called CB even though it is not shown as such on the logic , As usual, the output of CB is called cb. In the following equation o is the true output of the A p status memory ele- ment. A~ is set to "1" during the first pass through control point D10 in di- vide. Its true output, S , affects the carry-borrow logic as shown below dur- ing D12, ana the resulting output is gated into CB during D13. (See Delayed Control Flow Chart.) During Dl^, A is set to "0" such that 6=0, A^ is true (& = O) during all other control sequences including addition. CB = a_ 1 m_ 1 (m v & 2 ) ^ Q!_ 1 m_ 1 (m v & 2 ) The significance of this logic will be discussed first in relation to case h floating addition. In this case, the CB output is gated into CB during All. (See the DC Flow Chart D-1128.) If cb = 1 after this gating operation, is interpreted by the conditional logic in A12 as either a carry or borrow _ T U- depending on the sign of M. If cb - 0, it is interpreted as neither a carry or a borrow, and A12 causes nothing to be added to the least significant bit of the most significant half of the sum. The carry-borrow logic was suggested by R. H. Farrell. To understand its function in case k addition, it is necessary to look at the way this par- ticular case of addition is executed. In case h addition, the exponent of the augend (subtrahend) is so much greater than the exponent of the addend (min- uend) that the latter must be added (subtracted) to the least significant part of the former. To accomplish this, the most significant half of the augend (sub- trahend) is placed in Q, and the least significant half is placed in R with zeros in S, (See the DC Flow Chart and section 5.5.) The addend (minuend) in M is then added (subtracted) to the zeros in S and the result gated straight down (without any base k shift) into A, As a consequence, the contents of A are then always added to the least significant half of the augend (subtrahend) which is gated from R to M during A7. Prior to the addition, it may be neces- sary to shift the contents of A right until its original exponent difference has been reduced to zero. The addition of M therefore may be to either A or S. At the time of addition, the quantity in A or S is signed and may lie anywhere in the range: -1 < f < +1. Note that +1 must be included because the minuend may have been -1. The quantity in M is always positive or zero and may lie anywhere in the range: < m < k. The point in M is taken between M and M as usual, Both M and M have positive weight since they were originally Q_, and Q, j i.e., the ^5 — and k6 — bits of the augend (subtrahend). The sum A + M or S + M is always placed in A during the A10 control step prior to leav- ing the add loop (A9-A10). The limits on the quantities added insure that the sum in A lies in the range: -1 < f < 5. It is clear that a carry must be prop- agated into the most significant portion of the augend (subtrahend) if ^ < f < 5. Likewise, it is clear that a borrow must be propagated if -1 < f < 0. -75- It is possible to establish whether the sum lies in either of these ranges by examining the sign of the sum and the range of M, To determine the sign of the sum which is in A, we make use of the fact that the MsA selector is set to KgA during A10 in the final pass through the add loop (A9-A10). This means that the assimilated value of A appears at the output of the A adder, a, as control passes to All, The true sign of A, i.e., the sum, is given by (X at that time. If a = 0, the sura, a, must lie in one of the following ranges; CCt<2orU<Q!<5° We determine which range by knowing the range of M, In order for the sum to lie in the higher range, it is necessary for 3 < m < k Note that it is never possible for the sum to lie in the lower range when 3 < m < K„ Thus, if Ct m m = 1, a carry must be propagated into the most sig- nificant part of the augend (subtrahend) which then becomes the most signifi- cant part of the sum. If a = 1, the sum, Ct, must lie in one of the following ranges: -1 < 2 < or 2 < a < H, As before, we determine which range applies by know- ing the range of M. In order for the sum to be in the lower range, M must be in the range < m < 1. Furthermore, if m is in this range, the sum cannot lie in the higher range. Therefore is <xm,m = 1, a borrow must be propagated in- to the most significant part of the augend (subtrahend) which then becomes the most significant part of the sum. We note that a carry or borrow must be propagated if (X ,m m ^ a. m m has unit value. This expression is identical to the expression for CB when 6^ = 0, which is always true except during division. Even though CB is stored in the CB memeory element in All, it is still necessary to decide whether cb = 1 is a carry or a borrow. This is done by the conditional logic at the A12 control point. As shown on the Delayed Control Flow Chart, the MsS selector is set to CS if (cb)m = 1; to MMsS if (cb)m = 1; and left at OMsS if cb = 1 , From the above analysis, it is clear that cb = 1 only when m = m „ Furthermore, cb = 1 must be interpreted as a carry if -76- m = 1 and as a borrow if m - 0. If cb = 0, neither a carry nor a borrow is propagated. It follows that a carry must be added in the hk — position by setting CS if (cb)m = 1; and a borrow must be added in that position by add- ing a field of units to S via MMsS, if (cb)m = 1. In division, the carry-borrow logic compares the signs of the di- visor and the final partial remainder as described earlier. The result of this comparison, CB, is stored in the CB memory element during D13. The cb signal is used in the conditional logic of T)lh where the remainder is corrected for quotient round-off and in D17 where the quotient round-off is actually performed. We note that CB = OL , © m when 5 p = 1. As such, CB has opposite parity with respect to the sign comparison output, J , that is used during the divide loop (DIO-Dll). (See section 3»1«H«) Because A changes, the 7 signal could not be used in determining quotient round-off unless it were stored in some manner. Instead of storing 7, it was convenient to convert the carry-borrow logic to sign comparison logic using 6 and then store the output as in addi- tion. The final partial remainder is placed in A during D12. (See the DC Flow Chart, D-1128. ) During this same control step, the MsA selector is set to KgA such that the A adder output, a, represents the assimilated value of A after sufficient time has been allowed for the carry generator and adder logic to react. The true sign of the final partial remainder in A is thus given by Ct . (The partial remainders in A always lie in the range: -2. < s. < —. See section 3.1.16.) The divisor, d, may lie in either of the following ranges: 1 1 -l<d<-,orr-<d<+l. A divisor of +1 may arise while executing VID. -hk If the accumulator equals 1-2 after normalization, then round-off on the way to R during D2 may yield a +1 divisor. Therefore, the true sign of the divisor in M is given by m in all cases. If a , / m , a unit is stored in CB. The significance of the cb -77- signal in determining the quotient round-off and the prior correction of the remainder is discussed in section U.13. 3 . 1 . lU The Decoder Although in a strict sense, the decoders are not a part of the MAU logic, they are considered here for convenience and because they are the simplest of the decoders which set the MsA and MsS selector mechanisms. They are used only in the add (a) and clear add (b) sequences. The logic is shown on the right side of (J.8D (D-I506). The outputs of the 9, and status memory elements are decoded to form set signals for the MsS and MsA selectors as des- cribed below in negative logic, 0MsA Decoder Logic MsA - = (e v 9 ) v ©MsA MsA 9 = (0 v ) v/ 0MsA 0MsS Decoder Logic 2MsS - = (0 v ) v 0MsS MsS MsS 2MsS - = (0 v ) v 0MsS - = (0 v © 2 ) v 0MsS = (0 v ) v 0MsS The status memory elements are set during some control step, usual- ly decode (Gl), prior to the step that uses their outputs to set the MsA or MsS selector mechanisms. -78- 9 Outputs Operation a « l 2 l 1 l 1 Subtract M Add M Subtract 2M Add 2M As indicated earlier, the requests from a control point are in the form of zero (negative voltage) outputs. All selector mechanisms respond to zero inputs. The 9 decoder logic, as well as the u. and P decoder logic described below, must generate zero outputs in the active stage. For example, to set the MsA selector to MsA, via the 9 decoder, it is necessary to make MsA -0=0. This can only occur when 9 =9=0 and a control point request for 0MsA is present, i.e., when 0MsA =0. As long as 0MsA = 1, the outputs of the £MsA de- coder have no effect on the MsA selector mechanism. (See section U.2.) Simi- lar statements can be made with regard to the 0MsS decoder. 3.1.15 The n Decoder Most of this logic is shown in the left and center sections of |I0D (D-I506). The remainder is shown as part of the input logic to Qi p and R. on LQR (D-152^-). The principal outputs of the u. decoder set the MsA aid Ms S selec- tors during multiplication. A brief description of the multiplication instruction is included at this point to clarify the discussion of the u- decoder logic. A detailed descrip- tion is given in section 5.12. At the beginning of the multiply instruction, the multiplier is in AQ and the multiplicand is in M. The normalization sequence Qu is used to shift the multiplier left until it is normalized or Q = 0, whichever occurs -79- first o It is then rounded and transferred to R while zeros are placed in S. The two least significant bits of the rounded multiplier, a. and a, > , are recoded by the uMsS decoder logic on their way to Ri _ and R, i . The output of this logic sets the MsS selector to one of the following: 2MsS, MsS, OMsS, or \2 _ _ * MsS. If MsS is set during this initial step, a unit is also gated into R, as shown on LQR (D-152U). On the following step, the next two multiplier bits, r, and r, , and the mode bit, r> , are recoded by the uMsA decoder logic. The output of this logic is used to set the MsA selector to one of the following: 2MsA, MsA, OMsA, or MsA. Another output on LQR is used to set Q, during the down right transfer of S + l ; ' R into A,Q. After the transfer, As + |iM,R) appears in A,Q. If r,„ = 1, the r, and r, bits are modified by the borrow- subtr actor logic (see section ^.l.Yj) before they are gated into Q, _ and Qkk* This does not affect the setting of the MsA selector. If 2r^, + r, p + r» p > 3> Q1.0 i s se "t "to 1 by the uMsA decoder logic. On the next step, q, , q> p and q> are recoded by the uMsS logic. The outputs of this logic set R. p = 1 if 2q, - + q, + q. > 3, and set the MsS selector to one of the four options listed above. During this step, r{A + uM,Q) is placed in S,R. The q, and q, multiplier bits are transferred to Ri „ and R, , without modification. Even if modification occurred during transfer, it would not affect the multiplication. This process continues until the two sign bits of the multiplier have been sensed by the uMsS decoder logic in Qi and Q« . The up right trans- 1/ \ * fer places r(A + U-M, QJ in S,R with R, set to 0. The following straight down transfer places S + |iM,R in A,Q as the double length product. Q, p = while Qi and Q, , contain the sign bits of the multiplier at this point. By setting k2 # Ri = during the last transfer into R, the borrow- subtr actor is prevented from -80- modifying the two least significant bits of the product, ri and r. , as they are gated straight down into Q, , and Q^p- The multiplication algorithm is based on a recoded multiplier. The recoding is accomplished by the u- decoder logic. The primary reason for re- coding the multiplier is to avoid the need for 3M as a multiple of the multi- plicand. Such a multiple would be necessary if we simply examined two bits of the multiplier at each step. In order to emphasize this point, the M selec- tor settings required in each case without recoding are listed below. Multiplier Bits M Selector Setting OM 1 M 1 2M 1 1 3M To achieve 3M, we could add 2M to A ( S) , shift straight into S ( A) , add M to S ( A) and shift right into A ( S) , As an alternative, we could create a special adder between M and the M selector OR's such that 3M appears at its outputs shortly after M is loaded. With this device, we could simply select 3M, add it to A ( S) , and right-shift the result into S (a) . Neither approach is satisfactory, since the first is too slow and the second is too expensive. A better solution is achieved by recoding the multiplier to take advantage of the fact that addition and subtraction are equally easy to implement in the two's complement system. Let hk y = -2y + y + E y 2 1 ° k=l k represent the rounded multiplier. Because of round-off, y may have a value -81- of +1 so y is not always equal to y . In order to take advantage of the base h shift between A,Q, and S,R, two bits of the multiplier are examined at each step. Therefore, it is convenient to express y in terms of 23 base k digits , h' 22 y = P = B + Zp> _1 1=1 where P = -1, 0, 1 and B. = -1, 0, 1, 2 for 1 < i < 22 We require that B = B . This can be guaranteed if we relate B. to B. as follows : B. = B. + \. - h\. _ i i i i-I where \. = 0, 1 i for 1 < i < 21 with •82- K .. and X 22 = ° The X. are called mode bits. 1 To prove that (3 = P if the P. are related to the p. as indicated above, we consider p - p, 22 22 P - P = P + x Q + Z (p. + x - hx^K 1 - p Q - £ p ir 1 1=1 1=1 22 . 22 , , _ x = x n + Z xX x - Z \. u-^" 1 ^ i=l i j=l J' 1 Let j = i + 1 in the second sum and remember that \ = 0, , 21 . 21 6 - p = x + Z x.U -1 - Z x.iT 1 . l i 1=1 1=0 p - e - ^ - \ - o The rule for choosing X. given P. and X. is stated below for 1 < i < 22, X. n = 1 if 3 < P. + X. < h i-I — i i — X. n = if < P. + X. < 2 i-I - i l — This is not the only rule that might be used to choose X. if 2M, M, 0M, M, and 2M are available options for both the MsA and MsS selectors . The choice of this rule was partially based on the M selector requirements of -83- the (Bj and (d) sequences. Since a binary division algorithm is employed, the 2MsA option is not needed. However, all five of the above options for the MsS selector are used in the (b) sequence. By recoding the rounded multiplier according to the rule given above, it is possible to eliminate the 2MsA option entirely. Note that -1 < p. < 2 when the A., are chosen by this rule. Positive Mode Negative Mode < ^ h l t Selector Setting \-x OM 1 1 M 2 2 2M 3 -1 M 1 1 1 M l 1 2 2M 2 1 -1 M 1 3 1 OM 1 At the time of recoding, p. is located in R-, R,_ or Q, , Q. while the mode bit, V, is in R,_ or Q, . The Boolean expressions for the uMsA decoder (D-1506) can be de- rived from the above table. On the (22-i) — step of the multiplication process, let (3. = 2r, + r, and let \. = r, . Negative logic is used to set the selector, since it responds to zero inputs. The signals M3 - (J. Ms A, M5 - a and M5 - b go to zero when the designated control points become ac- tive and thereby cause the [iMsA decoder outputs to set the MsA selector. Let u 2 Aa = (M3 - u 2 Ms)(M5 - a) and u 2 Ab = (M3 - |i 2 MsA)(M5 - b). 2MsA = (r Ul v r h2 sy r^ v u^b)^ v r^ - r^ - n g Ab) MsA = (r Ul v r k2 v r U2 v/ UgAbXr^ v r^ v r^ - ^Ab) -8U- # # OMsA = (r Ul - r h2 - r^ - ^Aa)(r Ul - r^ - r^ - ^Aa) _ -* — * MsA = (r U] _ - r h2 v r^ v/ u^AaKr^ - r^ - r^ - ^Aa) The AND in these equations is actually formed at the input to the MsA se- lector logic shown on MsA-I (D-II76). The positive logic used to set Qj_ is shown on LQR (D-I52U). The signal, [i, is the true output of the u. status memory element which is set to "1" during Ml and reset to "0" during the last pass through M6. (See the Delayed Control Flow Chart . ) %2 = r Ui r U2 V r lU r te .At t 1 -1 Note that Q = \. which is the mode bit associated with the (i-l) — base k k2 * th multiplier digit and the (22 - i+l) — step of the multiplication. Except for slight modifications, the logic shown above applies to the uMsS decoder as well. The modifications consist of substituting q for r and ANDing in another term to permit recoding the least-significant multiplier digit as a is transferred into R following round-off. Since the least- t 1 significant mode bit always equals zero, A. pp = 0, the values, of (3 and X depend only on a> and a, , as indicated below. In order to abbreviate the re- quest signals, we let u S = M2 - u MsS, \i Sb = (Mh - u. MsS)(M6 - b) and ^Sc = (VlK - u 1 MsS)(M6 - c) ^. #. 2MsS = {q. kl - q. h2 v q^ v ^Sb)^ <* q^ - q^ ^ ^Sb)^ - 0^ ^ u Q S) # %■ MsS = (q Ul - q_ h2 ^ q^ ^ p^ScKq^ - q^ - q^ - U^SbKo^ ^ 0^ ~ U Q S) .£ # OMsS = (q Ul - ^ sy q ^ s, ^SbKq^ - q^ - q^ - ^Sb)^ - 0^ - n Q S) *3 -85- — * Its output controls the inputs to Q )|Q and R )i0 as indicated by the above equations MsS = (q kl - q U2 - q^ - l^ScKq^ - q^ ^ q U2 - ^ScXo^ - o^ - n Q S) As before, the AND in these equations is actually formed at the input to the MsS selector logic shown on MsS-I (D-II78). The positive logic used to set R,„ is shown on LQR (D-I52U), Since KgA = 1 as the rounded multiplier, en, is being transferred to R, it is used to condition the setting of Ri p on the initial step. During the iterative loop of multiplication (control points M5 and M6) KgA = 0, so R, is set according to *- the contents of Q, .., Q, 2 , and Q, 2 „ R *2 = % ± % 2 (^) ^ % ± % 2 (K&) - (\ 3 a kk (K&) It is important to note the role of the \x status memory element (D-1299). l 2 and R* 2 Q, and R, cannot be set to 1 by the multiplier recoding logic if n = 0, i,e,, if (i is true, During the last pass through M6, the count in the EAU reaches -1 — * and p. is set as indicated by the Delayed Control Flow Chart, This means that Rj_ is set to zero during the last right shift into S,R, The two sign bits of the multiplier (the sign digit) are in Qh^Q^p ^ the start of this step. During the step, they are recoded as a regular bit pair and the MsS selector is set accord- ingly. However, if R, 2 is set to "1" as a consequence of this recoding, trouble arises on the following step, The borrow-subtractor subtracts a unit from R) ,Ri if Ri 5 = 1. Thus, if Ri = 1, the two least significant bits of the product which are in R, n ^R^ 9 at the end of M6 on the final pass would be reduced by a unit during the straight transfer into Qk-^Qko which occurs in M7, The ne^d to set Ri = during the last pass through M6 is clear, A comment is also in order regarding the way in which the "sign digit" of the rounded multiplier is recoded. This digit is represented by the sign bits of the rounded multiplier, O. and Oi , Since the multiplier is normalized or nearly normalized prior to rounding, the bit pair, a a may be 11, 00, or 01, but never 10, Furthermore, 01 can only arise when the rounded multiplier is -86- +1 = 01,00 ... 00. It follows that may be -1, 0, or +1. However, at the time p is recoded, it is in Q, , Q^ p ^ and Q, may be or 1 if p = -1 or 0; but Q, = if 3 = +1. The recoding takes place during the final pass through M6, so P n determines the setting of the MsS selector. A case analysis follows. It was stated earlier that \ = 0, so i p o = p o + V If = -1, the Q, = Q, = 1. The uMsS decoder logic sees p as +3 * ' — instead of -1. If \_ = Qi p = 0, P Q = -1 and \ , = 1. MsS is set, but \ ,, which is placed in Rk p , is forced to zero because \x is set to "0" during this • * step. Consequently, B n = -1 as it should and \ = 0. If \ = Qi = 1, i (3 = as it should so OMsS is set. Since j-t is set to "0", \ is again forced to zero even though it would have unit value otherwise. If P = 0, then Q, = Q. = 0. The uMsS decoder logic sees as a zero and sets OMsS if \ = 0, and MsS if \ = 1. In both cases, \ , would be a zero anyway so the setting of u- to "0" is not essential. If P n = +1, then Q, = and Q, = 1. Since this can only arise when the rounded multiplier is +1, all previous multiplier digits must be zero. The equations for R, and Q show that \ will always be zero in this case. In fact, Ri = Q. = at every step of the multiplication. Therefore, the uMsS decoder interprets (3 as +1 and sets MsS. Here again X. = 0, so the setting of u to "0" is not essential. 3 . 1 . l6 The Division Predictors (p Decoders) The pMsA and -MsS division predictor logic is shown on DPa (D-1507). It is used only during division. The outputs of this logic serve two functions. First, they set the MsA and MsS selector mechanisms so' that the appropriate multiples of the divisor are subtracted from the shifted partial remainder at each step of the binary division process. Secondly, they are fed to the -87- quotient digit recoder logic , shown at the top of DKx (D-1507), which produces the base k quotient digit that is inserted in Rj,p> ^hof anc ^- ^kli on every sec- ond step of the division process. To provide a background for the discussion which follows, a brief description of the division process is included at this point. A complete des- cription is given in section 5-13° In the MAU a modified, binary nonrestoring division algorithm is 1 , 1 , l ed to divide the subnormalized fractional dividend, -rr < |D | < r, the "normalized" fractional divisor, j- < |d| < 1. The recursive relationships are given below The rules for selecting the quotient "bit" (y . or y = -1, 2j 2J+-L 0, or l) are complicated due to the stored carry representation of partial re- mainders. Consequently, the discussion of pMsA and pMsS logic (i,e,, the selection rules) is relegated to the latter half of this section, S 2j + 1 " ^ (a 2j " y 2j d) a 2j+2 = S 2j+1 " 2y 2j+l d j = 0, 1, 2 ... 22 or 23 The number of steps in the division process is controlled to yield a "normal- ized" fractional quotient, r- < |q| < 1. a„ = the subnormalized fractional dividend, tt < |D' | < r, in AQ with j = -1. d = the "normalized" fractional divisor, r- < |d| < 1, s = the (2j+l) — shifted partial remainder in SR. a . = the (2j+2) — shifted partial remainder in AQ, y = the quotient "bit" (y = 1, 0, or -l) generated by the pMsA logic ^ J ^ J during the straight transfer in AQ, = the quotient "bit" (y = 1, 0, or -l) generated by the p MsS logic 2J+1 ' 2j+l during the left shift into SR, -88- In all three divide orders DIV, NDV, and VTD, the divisor and divid- end are normalized prior to the fractional division. This is accomplished by the (jy sequence and the first four steps of the (d) sequence. During D5, the exponent difference is calculated. If the dividend is nonzero, it is subnormal- lzed in D6, i.e., shifted right one base U position into S, R. This is done to insure that the fractional quotient is always in the range: -1 < f < 1. The modified, binary nonrestoring division process begins at this point. During D7, the MsS selector is set to OMsS. The subnormalized divid- end is gated straight down into A, Q and the pMsA predictor logic, which examines the most significant a outputs of the S adder, sets the MsA selector to MsA, OMsA, or MsA. During D9, the most significant half of the first partial remainder is formed at the output of the A adder and shifted left into S. The least sig- nificant half of this partial remainder is in Q and is shifted left into S and R as usual. Bits Q 1 and Q go into S, and S. , as indicated in section 3.1.2.8, During this transfer, the pMsS predictor logic examines the most significant bits of the a output and sets the MsS selector to 2MsS, OMsS, or 2MsS. At the same time, the quotient "bit" recoder logic (section 3.1.17) recodes the zero quotient "bit" that is associated with the OMsS setting during D7 and the quo- tient "bit" (y Q = 1, 0, -l) that is associated with the pMsA setting during D9«, The resulting base k quotient digit (l, 0, -l) is gated into R« -, R^j, (.01, 00, 11) during D9„ R. is always set to zero at this point to prevent the borrow- subtrac tor (section 3. 1.17) from modifying the two least signifi- cant bits of the dividend which are placed in R. , and R, during D9, If Rk 2 = 1 during the first pass through D10, the borrow- subtr actor reduces this bit configuration by a unit in the h2 — position. After D9 is complete, the control passes to the iterative loop of -8 9 - After D9 is complete, the control passes to the iterative loop of division which consists of control points D10 and Dll . In D10 the new partial remainder which appears at the output of the S adder is gated straight into A,Q e The pMsA predictor sets the MsA selector to MsA, OMsA, or MsA according to the most significant bits of this partial remainder. The associated quotient 'bit" (y = 1, 0, -l) is stored in G p , H ; and the quotient digit that was predicted and stored during D9 or Dll is transferred from G, ,H to G ,H . In Dll, the new partial remainder which appears at the output of the A adder is shifted left one base h position and gated into S,R. The pMsS predictor sets the MsS selector to 2MsS, OMsS, or 2MsS according to the most significant bits of this partial remainder. The corresponding quotient "bit" (y = 1, 0, -l) is stored in G,,H . The quotient "bits" that were predicted on the two previous steps are held in G, ,H. and G p ,H during Dll. The quotient bit recoder examines the output of these memory elements and produces a base h quotient digit in the range of -3 to +3 which is inserted in Rj, P > ^ho) an ^ Rj,k during this control step. is process is repeated until the count in the EAU becomes negative Heating that 23 base k quotient digits have been generated) and the gener- ated quotient appears normalized in R. If the latter condition is not met, 2h base k quotient digits are generated. (See the description of the R normaliza- tion detector in section 3* 1.10.) When the quotient appears normalized in R, control passes to D12 where the final partial remainder and quotient are gated straight into A and Q respectively and the MsA selector is set to KgA. The al steps of the (jD) sequence round the quotient, generate a true remainder, and compute the associated exponents. Having briefly described the function of the division predictors, we proceed to define their logic. Note that negative logic is used to set ■90- bhe selectors as usual. For example, MsA - p must be zero to lector to MsA. pMsA Predictor Logic f -s m_ 1 (sa_ 2 ) v m (so ) m_ 1 (so_ 2 ) v m_ 1 (so_ 2 ) -10 J The signals so and sa are outputs of the high S special adder as dis- cussed in section 3.1.^. * * ^2 = °-2 °-l " °-2 °0 V °-2 °0 MsA - p = £ 2 T1 2 v ^T^ s, QMsA - p MsA - p = £ t^ v £ T} s/ OMsA - p OMsA - p = o ^ o ^ a ^ a pMsA OMsA - p = o o a a ^ pMsA pMsA = (DT - Pl MsA)(D10 - a) In order for the pMsA predictor logic to set the MsA selector, pMsA must go to zero as the result of a request from control point D7 or D10. (See section h.2.) In the absence of such requests, the outputs have unit value and therefore do not affect the MsA selector. The G and H Eccles -Jordan memory elements are used to hold the pre- dicted quotient "bit" which is interpreted as +1, 0, or -1. If MsA - p = 0, then the divisor is added to the partial remainder on the next step and the corresponding quotient "bit is -1, If MsA - p = 0, -91- then the divisor is subtracted from the partial remainder and the correspond- ing quotient "bit" is +1. If MsA - p = 0, the corresponding quotient "bit" is zero. A zero input on the 1 or side of an Eccles- Jordan causes the out- put on that side to assume unit value. The significance of the true outputs of G and H in terms of the quotient "bit" stored is summarized below. Quotient "Bit" Stored = y (,j = 0, 1, 2 — - 22 or 23) +1 -1 Let the 1 and side inputs to G~ and H be designated as Q ,0 2 h 1 1 1 1 1 and H H respectively. G = (MsA - p)(0MsA - p) G = MsA - p H 2 = OMsA - p H 2 = OMsA - p The AND at the input to G^ insures that g = 1 whenever OMsA - p = 0. pMsS Predictor Logic h - ^-i v *-!<*_! *! = m -i a -i v m -i a -l \ = a a V ^1^2 \ " 5 v ^1 V ^ a 2 V a a 2 la- - P = S Tl v 5~ T] "l'l l'l 2MsS - P n Lll, v ! n v OMsS - P 2MsS - P = I tj v | T) v OMsS - P OMsS - p = a ^ a ^ a ^ a ^ PMsS OMsS - p = a a a a v pmsS PMsS = (D9 - p MsS)(Dll - a) The PMsS signal must go to zero as the result of a request from D9 or Dll in order for the PMsS logic to set the MsS selector. As long as PMsS = 1, the outputs of the PMsS predictor have unit value and therefore do not affect the MsS selector. i t The G-, and H Eccles-Jordan memory elements are set as follows: G = (2MsS - p)(OMsS - p) G^ = 2MsS - p H = (OMsS - p)(gH ) H = OMsS - p t i The gH signal goes to zero during D6 to insure that h = 1 at the time H is set in D7. As a result, h = 1 when the quotient "bit" recoder produces the initial hase h quotient digit during D9. (See section 3. LIT.) Quotient "Bit" Stored = y^ . _ 2j+l (,1 = 0, 1, 2 --- 22 or 23) +1 -1 I 1 i p l p l 1 -93- During D7, p = or 1 depending on how g was left at the end of the previous divide order. During any pass through D10 in which h = 1, p = 1 because of i the AND at the input to G, . i t The logic for gating the contents of G, ,H into G ,H is given below, G = g, ^ pMsA G, = g , ^ pMsA H = h v pMsA H = h. v pMsA The quotient "bit" (y = 1, 0, -l) that is predicted during the present pass through D9 or Dll is not used in forming the base k quotient digit that is inserted in R^o, ^Lv an< ^ ^LL ( ^ ur i n S this pass. Instead, it is held in t i G ,H and transferred to G ,H during D10. In D7 or D10 the quotient "bit" (y = 1, 0, -l) predicted by the pMsA logic is stored in G ,H . During the following pass through D9 or Dll the two quotient "bits" stored in G, , H , G and H_ are recoded as a base 4 quotient digit which is inserted in Rk q , B., and Ri i . Note that y always has twice the weight of y . . The quotient bit re- 44 2j+l dj coder is described in the next section. Zero quotient "bits" arise as a consequence of the stored carry re- presentation of partial remainders. The true sign of fraction, f, in stored carry representation is not always determined by its leading bits. If the num- ber of leading bits that one is willing to examine is fixed, there is a range of f, -t < f : u, for which these bits may or may not determine the true sign. f is outisde this range, the true sign is always determined by these bits. The number of leading bits that must be examined increases as t and u approach zero. If the unshifted partial remainder, f, appearing at the output of the A or S adders is sufficiently large, its true sign can be determined by the asso- ciated predictor. If this sign agrees (disagrees) with the sign of the divisor, ■94- m ., the divisor or twice the divisor is subtracted from (added to) the shifted partial remainder on the next step; and a positive (negative) quotient "bit" is generated. If -t < f < u, the predictor may or may not be able to determine the true sign. Consequently, the sign comparison may be incorrect. In this case, zero is subtracted from (added to) the shifted partial remainder, giving rise to a zero quotient "bit". The last half of this section is devoted to a study of the underlying basis of the pMsA and pMsS logic. The recursive relations are used to determine the limits on the partial quotients and partial remainders. Knowledge of the latter is fundamental to understanding the design of the pMsA and pMsS logic. Dividing the recursive relations by d, we obtain the following expres- sions for successive partial quotients: ^2j+l d ^2j ^2j q _. _2j+2 _ _ ^2j+2 d ^2j+l ,y 2j+l where y and y = -1, 0, or 1 and j = 0, 1, 2 22 or 23. To find the steady-state positive limits on the partial quotients, let y 2J = y 2J+1 = land let (Q 2 j +2 ) MeDC = ( Q 2 jWx' Substltutin S the second ex- pression into the first, we obtain ^2J + lW ■ ^W«ta - 2] - k It follovs that (Q 2J+1 ) Max = k and (Q 2J+2 ) Max = 2. The steady-state negative limits are obtained in the same way with y 2j = y 2j + l = - 1 md ^2j + 2 } Min = (Q 2jW ■95- 'WMln = ^'V'ltn +2]+k Therefore, (Q_. _ ),,. = -h and (Q . _)... = -2. ' 2j+l Mm 2j+2 Mm Figures h and 5 provide a graphic picture of the generation of suc- cessive partial quotients. The partial quotients have no particular signifi- cance except that they are not a function of d, and therefore Figs, h and 5 are valid for all d, y- < |d| < 1, Furthermore, the limits on the partial remainders can be easily derived from the limits on the partial quotients. y 2j y 2j " +1 Figure h. Q 2 . + 1 = h^. - k 7 ■ 9 6- = 1 w Figure 5 . Q 2 - +2 = Q 2J+1 2y, j+i In Fig. h, note that y =0 is not allowed unless -1 < Q < 1. Likewise, in Fig. 5, y _ . . =0 is not allowed unless -2 < Q~ . , < 2. These ' ' 2j+l - 2j+l - limits may be translated into limits on the unshifted partial remainders o 2j and a . Using the expressions for Q . and Q_ . , the limits on Q imply ^.1+-L 2,1+2 2.1' 2,1 2j' "2j - d ... < a . < Idl... , and the limits on Q A . . imply -2 Idl... < s_. . < 2|d|... . 1 'Mm - 2j - ' 'Mm' 2j+l ^ J ' 'Mm - 2j+l - ' 'Mm The limits on |d| are r- < |d| < 1 where both - r- and +1 may arise as the result of round-off in a VID order. (See section 5.13.) Since cu • = a o • and 2j 2j Q * "l "l 1 = — r — , On- must lie in the range - - < 0n i S 17 before y Q ^ = is al- o. 2j+l h - a 2j - h 2j lowed, and Q^ . . must lie in the range - o < QL . , < q before y^ . . = is ' 2j+l B 8 - 2j+l - o 2j+l allowed. The outer limits on the unshifted partial remainders Oo . and a . * u 2j 2j+l are determined in a similar manner. Since -2 < Q_ . < 2, -2| dL. < a . < 2 1 d - 2 j - ' ' 'Max - 2j - ' which implies -2 < CT _ . < 2. Likewise, -U < Q_ . , < h implies -1 < a_. . < 1. - u 2j - ' - 2j+l - * - 2j+l - We are now in a position to consider the number of leading bits of 'Max Ob* and a that the pMsA and pMsS logic must examine to predict the appropriate J 2i 2J+1 •97- quotient "bit". There are two problems here. First, we determine the number of "bits" to the right of the point that are necessary to insure that o . or OL is within the prescribed limits when a zero quotient "bit" is predicted. Secondly, we decide how many "bits" to the left of the point are needed to de- termine accurately the sign when the unshifted partial remainders assume their maximum values. To insure that the true sign of a is known whenever a < - r- or a > y-, so , a , a , o n , and a are examined. The basis for this assertion is dis- cussed later. The apparent sign of a is so p © ^p. ^\ is the apparent carry into the -2 position, and is defined by one of the equations of the pMsA logic, If sa_p © ^p = Q> cr must be positive since any stored carries to the right of a have positive weight. If s a p © T] = 1, is apparently negative but may, in fact, be positive due to stored carries to the right of cr n . Therefore, the negative inner limit, CT = - r-, determines the number of leading bits of c which must be examined to insure that a zero quotient "bit" is predicted if and only if - j- < < r. Assuming the divide control sequence is functioning properly, a -1 a-jO-, a p = 1 implies that sg = 1. If s<j p = under this condition, would be greater than +2 which is outside the limits of the division process as discussed above. Furthermore, a o^o^ a P = 1 together with the adder rela- tion guarantees that a - o n - 0. Consequently, if a = 1, the true sign of a is positive while the apparent sign is negative. This also applies for any stored carry to the right of q , provided that there is a string of units between it and a . The condition o -, o n o-, o = 1 also guarantees that - r- < a <; To The positive limit is the sum of the infinite stored carry re- presentation shown below, -98- 111 1 1 1 1 1.1 1 1 1...0 1... * If o Gr) -* a o = 0, a stored carry in the a position or to the right of the a_ position cannot propagate into the -2 position and affect the sign of o. The apparent sign must therefore agree with the true sign. Note that o a o.a = does not imply that a < - r- or -r < a. Thus, there are stored car- ry representations of O. in the range - r- > a < y- for which the apparent sign must agree with the true sign. The function of the pMsA logic is summarized as follows. The appar- ent carry into the -2 position is tj = o v a a o The apparent sign of a, so Q r\ , is compared with the true sign of the divisor, m . In negative log- ic, this comparison is defined by MsA - p = £ r\ where L = m @ so . This comparison is meaningful if and only if the apparent sign of a and its true sign agree. If o o o o = 0, this agreement is guaranteed, so MsA is selected if MsA - p = (i.e., if the signs of the dividend and divisor agree), and MsA is selected if MsA - p = (i.e., if the signs of the dividend and divisor dis- agree). If a o o o = 1, the apparent sign of a may not agree with the true sign of a, so OMsA is selected. This selection does not cause the division process to go out of bounds in S (i.e., s„ . . = ka. . n within -Uldl : s_. n < Uldl) & s ' 2j+l 2j+l ' ' - 2j+l - ' ]/ Assuming the division process is functioning properly, this is a direct conse- quence of the fact that - r < a < 7 when a 000 = 1. The discussion of the limits on a = a.. , follows a similar pattern. 2j+l * ■* The bits oc , a , (X a. , a , OL , and OL are examined to insure that the true sign of OC is know whenever a < - q- or a > -q. This discussed in more detail later. The apparent sign of a is a © r\ where r\ = a JX ^ a a a a is the apparent carry into the -1 position. If a. ,© r\ = 0, a must be positive. If a _l© 'H-i = ^-t a i s apparently negative, but the true sign may be positive due -99- to stored carries to the right of OC . It follows that the negative inner limit, a = - o> determines the number of leading bits which must be examined to insure that a zero quotient "hit" is predicted if and only if - q- < a < q-. If OCJX J3t oc = 1, then oc , = 1, assuming the division process is func- tioning properly (i e , assuming the limits on the partial remainders have been maintained). If a =0 when a a a a = 1, a must be greater than +1 and the limits on the division process have been exceeded (i.e., an error of some type has occurred ). Note that when ocjpcococ = 1, the adder relation guarantees that OC = oc = 0« Therefore, under this condition the apparent sign of oc is negative, but the true sign is positive if a string of units and a stored carry appear to the right of a . As a final note, a a a a = 1 insures that - k < cc < rj-. The positive limit is the sum of the infinite stored carry representation shown be- low. 11 1 1 1.1 1 1 1 1...0 1 . . . If a OC Oi oc = 0, the apparent sign of oc must agree with its true sign. Any stored carry to the right of OC cannot be propagated into the -1 position. Note that a may be in the range - ^ < oc < -rr even though OC OC Ot oc = 0. The function of the pMsS logic is summarized as follows. The apparent * -x- carry into the -1 position, t] = ^rP^n ^ ^c^i^o®?* determines the apparent sign of a, CC © T) . The latter is compared with the true sign of the divisor, m This comparison is formed as 2MsS - p= | © T l-, in negative logic where 5 = OC m . The result of this comparison is valid if and only if the true and apparent signs of oc agree. If oc oc oc a = 0, agreement is guaranteed, so 2MsS is selected if 2MsS - p = (i.e., if the signs of the dividend and divisor agree), and 2MsS is selected if 2MsS - P = (i.e., if the signs of the dividend -100- and divisor disagree). If ocJXQLCt = 1, OMsS is selected, since the apparei true signs of a may not agree. Even though OMsS is selected, the succeeding par- tial remainder cu . = a ^ • n is still within -2|d| < a~ . _ < 2|d| . If the div- 2j+2 2j+2 ' ' - 2j+2 - ' ' ision process is functioning properly, this result follows directly from the fact that - q < a, < -r when a a ,ai a = 1. The maximum and mimimum values which the partial remainders may attain is the last topic considered in this section. These values are used to deter- mine the number of bits to the left of the point that must be examined to ex- tablish the true sign of a or OL in all cases. It has been shown that under steady-state conditions, the limits on the unshifted partial remainders are -2 < < 2 and -1 < a < 1. However, this does not guarantee that the limiting values can actually arise in practice. It is shown below that more realistic limits on the unshifted partial remainders are -2 < a < I and _1 < a < T^. Replacing a^ . _ by ~ . _, and s _, by Uql . . in the recursive relations, 2j+2 J °2j+2 2j+l 2j+l we obtain a 2j + l " °2j - y 2j d °2j + 2 = ta 2j + l " 2y 2j + l d Keeping the pMsA and pMsS logic in mind, we can now determine the maximum and min- imum values of a_ . . and ~ . ' 2j+l 2j+2 The limits on OL . are determined by noting that a p .and y^.d have the same sign if q a = and may or may not have the same sign if a _l a O a i a p ~ -*-• However, in the latter case, we know that y =0. It is clear that if a = and d = 111, then y^.d = 1 and QL . . = -1. In order for 2j ' " J 2j 2j+l -yp.d = +1, |d| must be 1 and a must be negative with -, o n o^ cr p = 0. To make ■101- a_ . , as positive as possible, cu . must be the smallest negative value for which 2j + l ' 2j a a n a-, a = 0. This value is found to be - — • It cannot occur in the machine because it has the infinite representation shown below. 111 1 0^ =111. 100101. ..01... = -^ Therefore, if Idl = 1, the most positive a_ . . must be less than 1 - — - = -r— . 1 ' ' 2j+l 12 12 The limits ona.. . are: -1 < a . n < ttTj and the corresponding limits on 2j+l - 2j+l 12' s~. , = ha^. . are: -k < s . , < =-=-. 2j+l 2j + l - 2j+l 13 To obtain the limits on ^ • n) we note that QL . . and y,_ . _. d have the u 2j+2' 2j+l 2j+l same sign if a (X oc oc = and may or may not have the same sign otherwise. If ajXQLQL = 1, yv. _ = 0. The negative limit on a ^ ■ « occurs when QL, . , =0 12 3 ' 2j+l ° u 2j+2 2j+l and |d| = 1, since a = U(o) - 2 = -2, The positive limit occurs when Idl = 1 and a. is the smallest negative value for which OLJX^OLJX- = 0. This 1 ' 2j+l 12 3 value is - — and has the infinite representation shown below, 11 1 OL . , = 1 1.1 1 1 1...0 1 . . . = - 7^ 2j+l 12 If Idl = 1, the most positive «_. _ is less that k(- — ) + 2 = — „ The limits 1 ' u 2j+2 '12 3 ° n °2j + 2 = a 2j + 2 are: ~ 2 ^ CT 2j + 2 < 3' 11 5 It is interesting to note that OU . , = ttt and n. ^ = ^ are no "t steady - 2j+l 12 2j+2 3 state limits even if infinite representations were allowed. The limit o . o - ? can b e obtained assuming a = -— but not conversely. d^+c. 2 j +1 12 The following examples illustrate how the limits on the unshifted par- tial remainders arise or are approached. ■102- Let the subnormalized divide! - nmi the normalized divisor be - I j = -1 AQ | . 1 . . . = 1 J = + M 1 1 1 . . . . = - 1 y o = -1 j = 1 a 1 1 . 1 . . . = — 7 8 j = SR | 1 1 , 1 . . . = - 1 2 j = -2M 1 . . . . = + 2 y l = 1 j = a • 1 1 . 1 . . . = - 3 2 j = o AQ i 1 1 . . . = - 3 2 j = 1 -Mj 1 . . . = + 1 y 2 = 1 1 1 j = 1 a i i i 1 1 . 1 . . . = - 1 2 j = 1 SR i 1 1 1 . . . . = - 2 j = 1 -2M 1 1 . . . . = + 2 y 3 = 1 ! j = 1 a ; . . . . =: o j = 1 AQ i . . . . = j = 2 M 1 1 . . . . = - 1 y h - -1 1 j = 2 a 1 1 , . . . = - 1 j = 2 SR 1 1 . . . = - k j = 2 -2M ! 1 . . . = + 2 y 5 = 1 ; 1 j = 2 a l 1 1 . . . = - 2 : j j = 2 AQ | 1 . . . . = - 2 j = 3 - M 1 1 , . . . = + 1 y 6 = 1 1 j = 3 a ! 1 1 . . . . = - i ! -103 The negative limits of a = -2 and a = -1 clearly occur in this ex- ample, It is easily seen that the infinite quotient is 1 y = -1 . 1 1 1-1 1 1 1 1...1. Let the subnormal! zed dividend by - rrr - 2 divisor be -1, J = -1 j = o and let the normalized J = j = o J = o j = 1 j = 1 j = 1 j = 1 j = 1 j = 1 j = 2 j = 2 AQ 1 1 . 1 1 1 1 1 . . . = 1 .2-88 OM . . . . = a 1 1 . 1 1 1 1 1 . . . = 1 " 16 . 2 -88 SR i l i 1 1 . 1 1 1 • 3 . . . . = 1 - IT - 2 -86 OM i ° . • • . . . . = 1 1 1 . 1 1 1 = 1 " k ' 2 -86 AQ 1 1 . 1 1 1 = 1 " k ' 2 -86 - M 1 . = + 1 a . 1 1 1 . . . . . . = 3 + h - 2 -86 SR 1 1 .1 1 1 1 , , • • » = + 3 - 2 -8U 2M | l 1 1 ,0 . . . , . . = - 2 a .1 1 1 1 = 1 - 2 -8U AQ .1 1 1 1 = 1 - 2 -8U M 1 1 .0 = - 1 a 1 1 , 1 1 1 1 • • • . . . = _ s -8k y = o JTi- 7r 7 3 --l y k = -i Although the last partial remainder shown in this example has a small negative value, the pMsS and pMsA logic will predict zero quotient "bits" for ■10U- almost all of the remaining steps of the division process because OLJXOLXX = 1 and o c n c-, a P = 1. It is clear that y = 0,01-1-1000 . . . = + tt- ^ n "this example the largest value of a is approximately +1, while the largest value of 3 OL is approximately + f-. Other examples using divisors slightly less than unity in absolute value will yield unshifted partial remainders which are closer to the limits of a = 5" aXi ^- a = To* There are no examples which yield unshifted partial remainders that equal or exceed these limits. Let crk = a n c n represent the apparent carry into the a -, position. Assuming a . a = 0, what are the smallest positive and negative values of for which CT »+) crk does not represent the true sign of j ? The smallest positive value is +2. It may assume either of the following forms under the above conditions : 0100 0000 0001.0000...; 0010.0000... The smallest negative value under these conditions is - I7-. It has the fol- lowing infinite representation: 111 1 1 1 1.1 1 1 1 . . . 1... Although this value cannot arise as an unshifted partial remainder, -2 certainly can. It may assume a number of different representations for which a -> © crk does not yield the true sign of a • Two possible representations are given below. 0010 00010 1101.110 0...; 1101.111100... It is clear from this analysis that when a -. ox Ch ch - ^, a -, *d) crk -, always yields the true sign of the unshifted partial remainder, a , when a > ■105- but fails to yield the true sign in certain cases when a < 0. To avoid this, it is necessary to examine so © ^ where 1 2 = a_ 2 v o_ 1 o Q o - If c^Cq^o^ = , the smallest positive and negative values of for which so @ f] does not represent the true sign are +h and -3z« -J-^ follows that s a © *) represents the true sign of o when a -, cua-, a p = and -2 < a < fr. Let ak = a v a a a a. represent the apparent carry into the a po- sition. Assuming a_a a a = 0, the smallest positive and negative values of a 23 for which a © Ok does not represent the true sign of a are +1 and - rr% Since the unshifted partial remainder, Ot , may be -1, a © ak will not yield the true sign of a in all cases when a a a a =0. To avoid this difficulty, it is neces- sary to examine a © tj where r\ = a a ^ (X (X (X (X . Assuming a a ^ a = °> the smallest positive and negative values of a for which a © r\ does not re- 23 present the true sign are +2 and -l^r. Therefore, (X © T) represents the true sign of a when aaaa = ° and -1 < a < *.. In the original design of the pMsA and pMsS logic, a © ak and a n © ak were thought to represent the true signs of CT and a when a CT n a n cu = aaaa = respectively. This error was pointed out by R. H. Farrell and cor- rected before layout was complete . 3 . 1 o IT The Quotient "Bit" Recoder and the Borrow-Subtractor The quotient "bit" recoder logic is shown at the top of LTa (D-1507). It is used only during division to recode successive quotient "bits", which are held in G , H , G , and H into base k quotient digits. At the output of the recoder, the quotient digit is represented by q. = _J +P[,p + 2 Pk"3 '" p kL where = 0, 1, 2 - - - 22 or 23 and -3 < q < 3. (The q. does not refer to the out- J J \ * put of the Q. F-element.j The bits f\ 9 , P^o* an ^ i Pi u are transferred to R^ p , R, , and R, , respectively when gR = 1, § = 1, and 5 = 1, indicating that a divide order is being executed. (See D-152U, D-1272, and D-1295.) •106- In the table shown below, y p . is the quotient "bit" held by G ,11 ; 2J y is the quotient "bit" held by G ,H . The sign comparison signal, 7, generated by the logic discussed in section 3«1»H« 7 = 1 when the true signs of A,Q (e.g., the shifted partial remainder) and M (e.g., the divisor) disagree, 2y 2j + l y 2j+2 7 q j P l+2 PU3 p ^u -2 -1 e -3 1 1 -2 e -2 1 1 -2 1 e -1 1 1 1 -1 e -1 1 1 1 1 1 1 e 1 1 2 -1 e 1 1 2 e 2 i ! 1 2 1 e 3 1 1 The e symbol denotes either a "1" or a "0" , and j = 0, 1, 2 22 or 23 From this table we obtain the following expressions: Pj.o = te^.i = - 2 ) - (2y ,.. - 0)(y o4iO = -1) '1»2 2j+l 2j+l 2j+2 - (2y 2J+1 = 0)(y 2 . +2 = 0)( 7 = 1) Using the Boolean expressions for y and y as given in the preceding section, we obtain: $1 =gh ^hffh ^hh'y h2 &1 n ± "-L^ig ^ x ^ 2 7 P^ 3 = C^2j + i ^ -2) (v = O) v -(y = l) ^2J + 1 = 2) (2y 2j+1 - 0)(y 2 . +2 = -1) L (y 2j + 2 = 0) v (y 2j + 2 = 1} •107- follows that P U 3 = S l h l h 2 V g 2 h 2 v h x g 2 h 2 v g 1 hJ h 2 v g 2 h 2 = hl h 2 - h x g 2 - h;L g 2 h 2 P ^ = (y 2j + 2 = _1) V (y 2j + 2 = 1} This yields = h_ P^ = n 2 In the preceding section, it is noted h - 1 implies g = 1, and h - 1 implies g = 1 except during the D9 control step. Therefore, we can say Sphp - during D9 and Dll, and g h =0 during Dll. Examination of the above expressions for f3, , p> , and p, > shows these identities would not pro- duce any simplification of the recoder logic even if the hardware necessary to insure g-,h =0 during D9 were added. The "borrow- subtractor logic appears on the upper half of SEC (D-1527). It is used only during division to convert serially the base h representation of the quotient (-3 < q. < 3) to the usual binary representation. If the quotient "bit" recoder produces a negative base h quotient digit, R. is set to "1" when gR = 1, The borrow-subtractor propagates this borrow over the Rj _ and R, positions. The outputs of the borrow-subtractor are defined in the table shown below. ■108- kl V k2 T h 2 \l \ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 The corresponding Boolean expressions for d, and d, follow d Ul = r Ui r l|2 v r Ul^2 S/ ^A 2 r L — x — -x \ 2 = r U2 r U2 ^ r ^2 r l+2 The second line of the table shows a unit subtracted from zero in R, and R, yields three as a result (i.e., d, = d, = l). This is meaningful if there is a unit in the R, position before the subtraction and a zero afterwards. Theoretically, this is precisely what happens even though the borrow-subtractor does not examine an output in the R< _ position. For the present, we shall assume the existence of an "Rh n " F-element which always contains a unit when r, = r, = ■x and r>p = 1, but contains a zero otherwise. * " * - - The quotient "bit" recoder, borrow-subtractor, and Q< = r \ i o r h-y r hh (see sections 3.1.2.11 and D-I52U) operate as a unit to form the fractional quotient in binary representation in the R and Q registers during control steps D7, D9, D10, and Dll. The function of this logic during the formation of a fractional quotient is now examined. In control step D6 (see D-1128 or D-1272) the normalized dividend in A, Q is shifted right into S,R placing the two least significant bits in R« ■109- and R; i . At this point in the division sequence, R, and 0, both contain "0" and 5 =5=0, Since the order is division and not multiplication, u = 0. Hence, the inputs to R. and Q, as defined in sections 3.1.2.13 and 3.1.2.11, are "both zero. OMsS is selected, which implies the quotient "hit" y = 0. This is a consequence of subnormalizing the dividend to obtain a fractional quotient in the range -1 < q < 1, The signal gH goes to "0" in D6 to set H to "1" which agrees with the selection of OMsS and y - 0. The most significant half of the initial unshifted partial remainder appears at the output of the S-adder. The most significant bits of this output feed the pMsA logic. In D7, the subnormalized dividend or initial partial remainder is gated straight into A, Q. The two least significant bits go into Q, _ and Qkk. The p,MsA signal goes to "0", which permits the pMsA logic to select MsA, OMsA, or MsA and set G_ and H accordingly. It also permits the contents of G, and H to be gated into G and H . Following these operations, the output of G and H represents the y quotient "bit" which may be 1, 0, or -1. The output of G, and H represents the y quotient bit which is zero, since h =0. Note that g may be "1" or "0" depending on the contents of G during the final pass through Dll in the last divide operation . The most significant half of the first unshifted partial remainder appears at the output of the A-adder. The most significant bits of this output feed the pMsS logic. The quotient "bit" recoder generates the initial base h quotient digit, q = +1, 0, or -1, according to the outputs of G, , H , G and H , Since h 1 = 1, q Q and y Q agree. If y Q = -1, P^ = 1, p^ - 1, and %k = 1 ' If y = L ' P U2 = °^ P ^ 3 "- °^ and p kh - 1 ' If y = °^ ^2 -' 7 ' % "- °' an< ^ P UU = ^° ^Up = '^ = 1 if "the true sign of the subnormalized dividend in A,Q disagrees with the sign of the divisor. Thus, if o cu a cu = 1 and the true sign of a disagrees with m , , a zero quotient "bit" is predicted (y = 0), but a negative quotient bit will eventually arise. However, the value of p. p is not ■1.10- TV ant on this initial step. It is not gated into R^ p during D9 because 8 = as explained below. The first unshifted partial remainder is shifted left into S,R during D9. The two least significant bits are gated into R< , and \ . The 6 signal goes to "l" allowing p. and p., to be gated into R, and R, , respectively. The logic associated with the 8, signal appears in the D9 section of D-1272. The point at which this signal controls the inputs to R« „ and R, , is shown in the right center section of D-152U. The A Eccles-Jordan is still set to "0" (i.e., 8_ a 0), so a "0" instead of (3, _ is gated into Rr - The reason for this is given in the next paragraph. The p MsS signal also goes to "0" in D9, per- 1 t mitting the p MsS logic to select 2MsS, OMsS, or 2MsS and set G and H, accord- ingly. Since the output of the quotient "bit" recoder is still influenced by the contents of G and H at this point, the need for G and H, is apparent. The most significant bits of the second unshifted partial remainder appear at the S-adder output and feed the pMsA logic. Control now passes to the iterative loop of the division sequence (D10 and Dll). We consider the first pass through the loop. When D10 is activated the first time, the second unshifted partial remainder is gated straight into A,Q. Since R, was set to "0" during D9, the outputs of the borrow-subtractor, d, and d, , simply reflect the two least sig- nificant bits of the partial remainder which are gated into Q, and Q^ p . Like- wise, the first two bits of the quotient in R, and R, , are gated into Q, and Qi 1 . If the first base h quotient digit is -1, both R, and R . contain a "l". Unless these bits are modified by the borrow-subtractor during the first pass through Dll, they will become the negative sign bits of the fractional quotient. Similar statements apply for q = and +1. Q, is set to since R, = and u = 0. If R. were set to "l" during D9, the two least significant bits -111- of the first partial remainder would be modified by the borrow-subtractor during the first pass through D10, This is why A is not set to "l" until control passes to D10. The p MsA signal goes to "0" during D10 and allows the pMsA logic to select MsA, OMsA, or MsA and set G and H accordingly. It also gates i t the contents G, and H into G and H . The third unshifted partial remainder then appears at the output of the A-adder and in the first hk bits of Q, During the first pass through Dll, the third unshifted partial remainder is shifted left into S,R placing the two least significant bits in R and Rr n . The unmodified sign bits of the quotient which correspond to q n are gated into R, and Ri^* The outputs of the quotient "bit" recoder are gated into R^ Q , ^h?' and Rj i since 5=5=1. A "0" is gated into R, unless the base h quotient digit q is negative or zero with y = 1. The p MsS signal goes to "0" which allows the pMsS logic to select 2MsS, OMsS, or 2MsS and set G and H accordingly. The fourth unshifted partial remainder appears at the output of the S-adder and in the first h2 bits of R. When D10 is activated the second time, the fourth unshifted partial re- mainder is shifted straight into A,Q with the least significant bits being placed in Q, and Q^ . The bit configuration in Q^ , Q^ 2 , Q^, Q^ , and Q^ is consid- ered below. The p MsA signal goes to "0" and allows the pMsA logic to select MsA, OMsA, or MsA and set G and H accordingly. This also transfers the con- t i tents of G-, and H to G and H „ The fifth unshifted partial remainder then ap- pears at the output of the A-adder and in the first U2 bits of Q. If R« p contains a '0" during the second pass through D10, the first four bits of the quotient in R^,, \o) %v and ^UU are S 3 ^ 6 ^ straight into Q, , %2> %3' and \k' A "°" iS gat6d int ° %2' If R^ contains a "l" and either or both of R, and R,, contain a "l", the base h quotient digit q is negative. The outputs of the borrow-subtractor -112- (d, ,d, ) are (0,0), (l,l), or (l,o) depending on whether q = 1, 0, or -1. If cu = 0, R, and R, both contain "0" and the borrow is false. However, in this case the outputs of the borrow-subtractor (l,l) are gated into Q, and Q, as the sign bits of the negative quotient. Since either or both of R. and R. . con- tain a "1", a "0" is gated into Qj, p . The contents of R, and R, , are gated straight into Q, and Q, a s usual. If R> contains a "l" and R, and R, . both contain "0" during the sec- ond pass through D10, q is zero but the true sign of the second partial remainder disagreed with the true sign of the divisor. Note that the second partial remain- der is gated into A, Q, during the first pass through D10. In this case, a borrow is initiated in anticipation of a future negative quotient digit. Even though a zero quotient digit is predicted, a negative quotient digit will eventually arise in the infinite representation of the quotient because 7=1. Since the borrow which accompanies a negative quotient digit can only be propagated over Ri , and R, during the transfer from R to Q, it is necessary to initiate a bor- row from the bits in R, and R, as soon as a zero quotient digit is placed in R, and R, , with y = 1. In view of the fact that 22 or 23 zero quotient digits may be generated before the negative quotient digit appears, the borrow from R, and R^o must be held as a stored carry in Q. . Therefore, if the division pro- cess terminates before the negative quotient digit is predicted, the stored carry is transferred to S, by the interchange in D17 and added to the quotient by the S and A adders. Returning to the second pass through D10, the outputs of the borrow-subtractor are gated into Q, and Qk p « Q^o = 1 in this case, so a "l" is gated into Q^p* The zeros in R, and R, , are gated straight into Q> and Q, , as usual. The significance of the theoretical "Rh n " F-element is now apparent. If this element existed, it would receive the stored carry that is placed in Q, k2 -113- when a zero quotient digit is predicted with 7 = 1. For example, assume the fol- lowing bit configuration in R during the second pass through D10 where x and y represent the two least significant bits of the partial remainder. V* " - n r* - l r 39 - x r k0 = y v kl = r U2 = ° r k3 = r kk = ° The resulting bit configuration in Q during the second pass through Dll is given below. %2 = 1 q 39 = X ^0 = y %1 - X %2 = 1 %3 = ° %k = ° Assume that a zero quotient digit is placed in R. and R, , during the second pass through Dll. Since Ri was set to "l" under the same condition during the first bit configurations in R and Q appear below, pass through Dll, 7 must still be "l" so R, is again set to "l". The resulting "4" - * 4 al r 3T :: X r 38 = y r 39 = X T h0 - X r >+l = ° d 37 = X q^ = y q^ = 1 q^ = 1 %± = 1 r U2 = ° ^3 = ° r UU = ° %2 = X V * X 1U3 = ° \K'° * . .. * It is clear that the borrow in R, is actually subtracted from V'r, " + 2r, + r> _ It is also clear that the "R, " F-element does not have to exist physically. If * we assume a -1 quotient digit is placed in R, , R, , and R. > during the second pass through Dll, the resulting bit configurations in R and Q are as follows: " - 1 l r 37 = X r 38 = y r 39 = 1 r liO = 1 L = ° :> = ° r 'i3 = T kU ' X- %2 = q 37 = X q 38 = y q 39 = 1 %0 = 1 %l = 1 %2 = 1 %3 = 1 %h = 1 This pattern of activity is typical of the remaining steps of the di- vide loop. During each pass through Dll a "l" is gated into R. p if the quotient "bit" recoder generates a negative "base k quotient digit or a zero digit where the true signs of the partial remainder in A,Q and the divisor in M disagree (i.e., where 7=1). In either case during the next pass through D10, a unit is borrowed from V'ri " + 2r, + r. to yield 2d, -i d, which is gated into Q» and Qk q . In the former case, the borrow is absorbed by the negative quotient digit that was placed in R) , Ri , and R, , so \,n i- s se ^ "to "0". I n the latter case, a zero quotient digit was placed in Rr 9 , ^hot anc ^ ^hh so ^^ e borrow i- s held as stored carry in Q, . If the quotient "bit" recoder logic generates a posi- tive base h quotient digit or a zero digit with 7=0 during any pass through Dll, R, is set to "0". A borrow from the bits in R, and R, does not occur dur- ing the next pass through D10, and 0^ is set to "0". Even if a string of zero quotient digits are generated, 7=0 implies that the next nonzero quotient digit will be positive . During the final pass through Dll, the p„MsS signal goes to "0" allow- ! t ing the pMsS logic to select 2MsS, OMsS, or 2MsS and set G and H accordingly. The final base h quotient digit is placed in R« , R, , and R. . . Note that this 1 1 digit is independent of the excess quotient "bit" held in G and H . The divide loop terminates and control passes to D12. The partial remainder beyond the final partial remainder appears at ■115- the output of the S adder during D12. It is gated straight into A so its true sign may be compared with the sign of the divisor via the KgA request and the carry-borrow logic as explained in section 5.13. The output of the carry -borrow logic corresponds to 7 at this point. It is gated into the CB F-element and used together with the excess quotient "bit" in G, and H, to determine quotient round-off as described in section 5.13. The latter occurs in D17 while the corresponding remainder correction occurs in DlU. The final unrounded fractional quotient appears in R during D12. If h2 R, contains a "l", the Ul — and k-2 — bits of the quotient are modified by the borrow-subtractor during the straight transfer into Q. Q« is set to "1" if the last quotient digit is a zero and Ri _ is set to "l". This represents an unused borrow which is absorbed as a stored carry by the S and A adders following the interchange in D17. This completes the description of the quotient "bit" recoder, borrow- subtractor and associated logic. Note on D-1272 that 5.. goes to "0" during D12. A ? is set to "0" during Dlk. For a description of the complete division control sequence the reader is referrec to section 5.13. 3.2 The Exponent Arithmetic Unit The general structure of the EAU is shown in Fig. 6. The EA, ES, EM, and E registers each contain 8 bits as shown below. EA^, EAg . . . EA i . . . EA Q ES„, ES/- . . . ES. . . . ES^ EM^ EMg . . . EM i . . . EM Q E 7 ' E 6 * * * E i * ' * E The EAU does arithmetic modulo 256. The point lies at the right end -116- ill registers the i — bit having a weight of w except the "( — bit v. ,th 7 has a weight of -2 . An 8 bit adder (D-adder) with an optional carry into the — position provides the capability of doing exponent arithemetic and counting. It accepts the outputs of the EA register and the sD selector as inputs, and yields a sum, d, which can be placed in ES via gES or in E via DgE. The value of d as function of em and ea under various selector and carry input settings is given below. c = c = 1 EMsD d = ea + em d = ea + em + 1 Note: The small c EMsD d = ea - em - • 1 d - ea - em denotes the true 2sD d = ea + 2 d = ea + 3 output of the C OsD d = ea d = ea + 1 status memory ele- 2sD d = ea - 2 d = ea - l ments. 22sD d = ea - 22 d = ea - 21 In contrast with the MsA and MsS selectors, the request for EMsD does not automatically yield a carry input to the lowest order position such that d = ea - em. DC must also set C to "l" or "0" depending on whether d = ea - em or d = ea - em - 1 is desired at the adder output. The selectors sEA and sE control the input to EA via gEA and the in- put to E via gE. The new contents of these registers following activation of the appropriate gate are listed below. EsEA: e S M >EA EMsE: em^>E ESsEA: es ^>EA OsE: 0^>E OsEA: £^>EA 6sE: 6 ^>E 21sEA: 21 ^>EA 22sE: 22 ^> E During the decode step (Gl) a zero or the contents of E is transferred to EM via FlgMEM. The sign bit of the incoming exponent IN, is always gated ■117- o w •H & > k4 w L>n a T CO vo V H O u 1 i Dec Memo M) I*" Exponent with (ED 3 w ESsEA; EsEA OsEA; 21sEA 3 i. LJ ' I I I lo o O « Q O P Q W W W W I a +> •H I o O H S ■118- into both EM,- and EM . The D adder is used to determine d = ea - em - 1 i n floating addition, ea + em in multiplication, ea - em in division. It is also used in conjunction with the EA and ES or E registers for counting the number of shifts in floating addition and the number of iterative steps in multiplica- tion and division. At the end of a DC operation the exponent of the result is left in E. At the end of divide orders the exponent of the quotient is in E and the exponent of the remainder is in ES. In performing a DC store order, the exponent of the operand to be stored is placed in ES and then transferred to the last 7 bits of the OUT register dur- ing the S9 step of the store sequence (Flow Chart D-1128). Whereas -128 < x < 128 is allowed inside the EAU, only exponents in the range -6K < x < 6h can be stored with f. If x is stored alone as in SEX, es„ is mapped into IN_ Q , IN, ... IN, , IN^ with esg — > IN^ , es — > IN,g ... and es Q — > IN . Using SEX, -128 < x < 128 can be stored as a quarter word by AC. Note that the sign bit is duplicated in the six most significant bit positions of this quarter word. The bits of f that normally occupy these positions are over-written during the transfer of R and ES to OUT. This feature is discussed in greater detail in section 3.1.2.1U. The strictly exponent orders complement the SEX order. Even though IN is copied into M and EM during the decode step as previously described, the first step of ADE, SDE, CAE, and CSE copies M, , into EM^. Thus, if one is willing to use a 13 bit quarter word and ignore the fractional part or store it separately, storage and retrieval of full 8 bit exponents is possible. The EAU decoder is a large block of logic whose inputs are the outputs of the D-adder. Its purpose is to detect specific values and ranges of the adder output. Knowledge of these values is used in the execution of the float- ing add and shift instructions . They are also used to determine the end of a -119- count. Detection of whether the output is inside or outside the range -6k < x < 6U is also accomplished at this point. Since knowledge of the pre- vious range or value of d must be remembered during the time the inputs to the adder are changed, gES or DgE will gate the outputs of the EAU decoder into a register called ED. The memory elements of this register are named according to the range of d they represent. For example, the ES > memory element is set to the "1" state (i.e., set so that its 1 or true output is a positive volt- age) by gES or DgE if d > is true. If d < is true when gES or DgE is on, the ES > memory element is set to the "0" state, 3.2.1 A Summary of the EAU Logic The registers and selectors of the EAU are shown on the drawing by the same name (D-1502). The eight bit adder associated with the EAU is shown in block form on the EAU drawing and in detail on the EAD drawing (D-I503). The exponent decoder logic as shown on EDM (D-I50U) is considered a part of the EAU, The outputs of the exponent adder feed the decoder as indicated by the central table on the EAU drawing. 3.2.2 The EAU Bit Path Logic The bit path logic of the EAU is described first. As in the MAU, the description is register- and selector-oriented including the connections with the Fl (IN) and F0 (OUT) registers of the Flow Gate Memory, The descriptions of the 8-bit full carry adder and the exponent decoder follow in order, 3,2.2.1 The Fl to EM Path The inputs to the EM register are shown at the top of the EAU drawing. When FlgMEM = 1, Fl, is gated into EM^ and EM.^ while F, ^ through F are gated •120- into EM through EM respectively. As shown in Fig. 6, there is a path from ES to EM. When ESgEM = 1, es„ through es are gated into EM, through EM respective- ly. Note that mn is gated into EM.^ when m, , gEM^ = 1. This is shown in the up- per left corner of D-1502. The first step of the (e) sequence is the only con- trol step which causes this transfer. (See section 5.6.) 3.2.2.2 The EM Register and the EM = -6k Logic The EM register is loaded as indicated in the preceding section. Its outputs feed the sD selector which is described in the following section and the sE selector which is discussed in section 3.2.2.7. The true output of EM,- and the complement outputs of EM through EM feed an AND shown in the top center of the EAU drawing. (em = -6k) = (emg)(em )(em 1+ )(em )(em 2 )(em 1 )(em Q ) It is clear that the output of this AND has unit value only when EM contains + 6k. (The point in the EM and all other EAU registers is assumed to lie to the right of the — bit.) Since this detector is used by DC only when EM con- tains an in-range exponent from memory ( -6k < em < 6k), its output is called (em = -6k) . 3.2.2.3 The sD Selector The outputs, eb., of the sD selector feed through difference amplifiers (shown at the bottom of the EAU drawing) to the 8-bit full-carry exponent adder (D adder). The eb„ and eb„ signals also feed the exponent decoder. Shown be- low are the Boolean expressions for each bit position of the selector, eb. = em.(EMsD) v i^. (EMsD) i i l < i < 7 -121- eb„ = etv = eb_ = eb, = eb. eb^ = eb n = eb V f t eb 6 V ( eb 5 \s ( t N/ ( eb 3 \y ( eb 2 \/ ( e \ \/ ( -22sD) s/ (-2sD) -22sD) v/ (-2sD) -22sD) ^ (-2sD) -2sD) -22sD) v/ (-2sD) -2sD) -22sD) v/ (-2sD) v (2sD) eb eb When the sD selector mechanism is set to OsD, EMsD - EMsD = -2sD = 2sD = In contrast with the MsA, MsS, and 2MsS settings in the MAU, EMsD does not auto- matically cause the complement carry to be added to the least significant posi- tion of the difference. In the EAU adder (D adder) this carry is the true out- put, c, of the "complement carry" status memory element C (D-I285). If EMsD and C are true during a particular control step, then ea - em - 1 appears at the D adder output. If EM and C are true, then ea - em appears at the output. The D adder can be used to count up or down on the contents of EA by one or two units per pass. This is accomplished by a choosing of the proper com- bination of -2sD or 2sD and C or C. For example, ea - 2 appears at the output of the D adder when -2sD is selected and C is true. This type of count is used to control the number of passes through the inner loop of the multiply sequence (M5 and M6). The -22sD setting is used in only three control steps -- kh, S10, and D17. If EA contains the exponent of the accumulator, AQ, then ea - 22 is the exponent associated with the positive fraction contained by Q where the radix point lies to the left of q._.. ■122- 3.2.2.U The sEA Selector As shown at the bottom of the EAU drawing, the sEA selector controls the input to the EA register. The Boolean expressions for the outputs, EA., are given below. EA. = es.(ESsEA) v e.(EsEA) 1 i v 1 < i < 7 The es. and e. signals are the true outputs of the ES. and E. F-elements respec- tively. EA = EA* EA 6= EAg EA r = EA' 5 5 EA. = EA. ^ 21sEA EA = EA* EA = EA ' v 21sEA EA = EA' EA = EA v 21sEA When OsEA is selected, ESsEA = EsEA = 21sEA = 0. The 21sEA setting is used only in the M2 control step. The need for this additional selector op- tion arose as a consequence of the way in which the count for the inner loop of multiply is handled and the desire to make the multiply sequence as fast as pos- sible. 3.2.2.5 The EA Register When gEA = 1, the output of the sEA selector is gated into the EA ■123- register. The outputs of EA, ea., feed the exponent adder which is described in section 3.2.3. (Note on the EAU drawing that portions of this adder are on four chassis -- A6R, A7R, S6R, and S7R. ) The ea„ and ea signals also feed the expo- nent decoder. 3.2.2.6 The ES Register and the ES to FO Path As shown in Fig. 6, the only signal inputs to the ES register come from the exponent adder. When gES = 1, the adder outputs d through d , are gated into ES through ES respectively. When -6kgES = 0, the ES register is cleared to -6k. As shown on the EAU drawing, the value to which each ES i F-element is cleared is indicated by the side on which the -6UgES signal enters. The outputs, es„ through es , feed the sEA selector and the EM regis- ter as described above. Outputs es/- through es are gated into E0, through FO when RESgFO = 1. When SEX (store exponent) is executed, the es„ signal is used to overwrite r through r, , causing es to be gated into FO through FO.. when RESgFO = 1. (See section 3.1.2.1^.) The es 7 and es/- signals are used to generate es (+) es/- as shown at the left center of the EAU drawing. This new signal is used only in the con- ditional logic of S9. It has unit value whenever the contents of ES lie outside the interval: -6k < es < 63. Any exponent outisde this interval is considered overflowed with respect to Flow Gate or Core Memory. Thus the "overflow" status memory element, 0V, is set when es„ @ es/- = 1; the store order being executed is not logical, ^ = 1; and the number being stored is not zero (i.e., RZ = z = l). 3.2.2.7 The sE Selector The sE selector appears, at the middle of the EAU drawing. The Boo- lean expressions for the outputs of this selector, E. , are given below. ■12^- E. = em. (EMsE) < i < 7 1 i - — The em. signal is the true output of the EM. F-element. E 7 — E T E 6 = E 6 E 5 = E 5 \ = E u" 22sE E 3 = E 3 E = E v 6sE v 22sE E. = E v 6sE ^ 22sE E = E As usual, when OsE is selected by DC, EMsE = 6sE = 22sE = 0. The 6sE setting is selected only in the PI step of the P sequence when SIA is exe- cuted. The 22sE setting is selected by only two control steps: PI for SIF, and D6 for any divide order. 3.2.2.8 The E Register As shown at the center of the EAU drawing, the E register is composed of double-gated F-elements. The outputs of the sE selector, E., are gated into the E register when gE = 1. When DgE = 1, the outputs, d. , of the exponent adder (D adder) are stored in the E register. The d. outputs can be gated into either the ES or E registers by turn- ing on gES or DgE. If DgE = gES = 1, d. is stored in both ES. and E. simultan- eously (although somewhat more slowly). The arithmetic operations in the EAU are so arranged that DC never does this duplicate gating. Even if it should -125- tecome desirable at some future date, it is not recommended because the fan-out capability of the d. would be overloaded in certain cases. As indicated by the EAU drawing, the E register outputs, e., feed the sEA selector only. 3.2.3 The Exponent Adder (D-Adder) The exponent adder (D- adder) shown on EAD (D-I503), operates over eight bits and has full carry assimilation. It is designed for high speed and large fanout. The contents of the EA register, ea, the output of the sD select- or, eb, and the outputs of the "complement carry" status memory element, C, are its inputs. The sum of these inputs is represented by the d output in twos com- plement form. This output feeds the ES and E registers as well as the exponent decoder which is duscussed in the following section. The adder is essentially composed of two ranks of modulo 2 adders and an 8-bit carry generator. The first rank of modulo 2 adders form ea. (±) eb. . These signals together with others form the carry, c, into each position. The second rank of modulo 2 adders form the sum bits, d. = (ea. ©eb.) ©c. For ' l 1 11 use in the exponent decoder the complement sum bits, d. = (ea. ©eb.) (s) c., are also formed. Restoring logic is used to form both d. and d. to provide adequate fanout and voltage level at the input to the exponent decoder. The Boolean expressions for the adder as shown on EAD are given below. First Rank of Modulo 2 Adders w. = (ea. )(eb. ) v (il )( e b, ) < i < 7 1 11 ii — — Carry Generation Logic u. = (ea. )(eb. ) < i < k 111 - - v. = (ea. ) v/ (eb. ) < i < 6 1 v 1' 1 - - -126- In the expressions which follow, u. and v. may he further designated by -a or -b. This is the means used to distinguish between two signals which are logical- ly identical but electronically different. For example, in the lower right hand corner of the EAD drawing u - a and u - b are equivalent logically but are formed with two separate nonrestoring AND circuits. This was done because the required fanout for the u signal exceeded the maximum of three for a nonrestoring circuit. In the interest of speed, two nonrestoring AND s were used in place of one restoring AND. u = U V v u u 23 2 3 3 V 2 V 3 = ^ v 2 " a ^ v 3 w 3% = W 3 V ^ V5 = V 5 U U 5 = V5 v ( ea 5 )( eb 5 ) These miscellaneous signals are now used to form the carry into each position, c = c (True output of the C status memory element) C =CV v [11 - h) 1 v ; C 2 = °0 V 0^ V 1 " ^) v ( u " b )( v x - b ) ^ u x C 3 = Vo^l " b )( v 2 " b ) ^ ( u " a )( v i " a ^ v 2 " b ) V U 1 W 2 V U 2 C k = C W W 1^ Y 2 V 3^ V ^ U " a ^ v l " a )( v 2 v 3 ) v ^ U 1 V 2^ V 3 ^ U 23 c 5 = c i( v i " a )( v 2 v 3 )v ii " ^ u i v 2 )(v 3\^ " U 23 W U V \ c 6 = c 2 (v 2 - a)(w 3 v u )v 5 - ^3 ( V 5 ) V \5 C T = c 3 (w 3VV6 v u 3 ( V 5 )v 6 v u kf6 v u 6 ■127- Second Rank of Modulo 2 Adders with Complements d. = w. © c. < i < 7 l li — — d. = w. (=)c. < i < 7 l i v l - - To resolve the complex appearance of the carry generation logic, re- move the "a" and "b" designations and substitute the expressions for the miscel- laneous signals. The resulting expressions for the c. contain minterms having a mixture of v. and w. variables. Replacing all of the v. by w. or vice versa 11 11 would still yield a set of correct expressions for the c. . This follows because th a carry generated in the i — position, i.e., u. =1, is propagated into the (i-j) — position (j > 0) if either w = 1 or v = 1 for all k in the range; k k i-j < k < i. The possibility of using either w. or v. in the carry generation logic was pointed out by M. Faiman. The mixture of w. and v. signals that is used was determined largely by fanout limitations and the desire to keep the tran- sistor cost at a minimum. 3.2.U The Exponent Decoder The logic for the exponent decoder is shown on the EDM drawing (D-1501+). Its inputs are ea_,, eb , and the outputs of the exponent adder. In addition, the gEA, gES, and DgE signals are used to gate information into F-elements which indicate something about the range of the D adder output. The S7-d input is used to set the ES < -6k F-element into the "l" state whenever the ES regis- ter is cleared to -6k during the S7 step of the store sequence. With the exception of EDC, the F-elements shown on the EDM drawing form the "exponent decode" or ED register. The decoder outputs (e.g., d = -2) set the ED F-elements (e.g., ES = -2) when gED = 1. Note that gED = gES v DgE. The outputs of ES = -k, ES = 0, ES = 1, and ES = 2 are combined and -128- gated into EDC when gEA = 1. The EDC output, edc, is used in the conditional logic of the A9 control step. Both ES = -k, EDC, and the logic associated with their inputs vere added to the original design of the decoder to provide slow and fast modes of operation for the add loop (steps A9 and AlO). (See section 5.5.) The outputs of the exponent decoder and the ED register are used pri- marily in the add loop (A9 and AlO) and shift loop (Fl and F2). However, be- cause the range of the D adder output is used so often to direct the action of DC, the decoder outputs are cabled to many other areas . Excluding the add and shift loops, one or more decoder or ED outputs are used in Al, A2, A3, A8, D7, D10, D13, F5, K2, M3, M5, M6, MT, PI, R2, S5, and S7. The Boolean expressions for the decoder are given below. For the most part, these expressions were established by M. Faiman. The logic is developed as shown on the EDM drawing moving left to right from input to output. It is left for the reader to verify that the final outputs indicate the conditions their signal names imply, e.g., (d = 0). First Row (ea^) ^ (eb^) = (ea^)(eb^) (ea )(eb ) = (ea )(eb ) (ea ) v (eh) = (ea )(eb ) (ea )(eb ) = (ea )(eb ) -\ > Cable Outputs The numbers used to name the signals defined below (e.g., No. 21 ) have no significance with respect to values or range of values of d which the Boolean expressions define. •129- Second Row No. 21 = cL (Used to increase fanout) No. U-2 = ^cL (Used to increase fanout) No. 16 = d" 5 v d^d v d^d" 2 No. 17 = d u v d 3 d 2 No. 18 = d^ ^ d d 2 v dl No. 22 = d u - dd^ ^ d 3 d 2 d Q No. 2U = d 6 - d 5 - d^d 3 - d 1| d 2 d 1 No. lU = d 5 - d u d 3 v d^dgjV d 1+ d 1 d No. 25 = No. 28 = No. 29 = (Ldgd d^d d 2 No. hk = d_ (For fanout) HO. 15 = d g - SJV&VO No. U3 = d_ (For fanout) No. 26 = No. 30 = idldld 2 No. 31 = d (For fanout) (df = -l) = O, v dg v d v d^ v d v d 2 v d^ v d Q The latter expression gives a "fast" indication of when d = -1. It is sensed only during the inner loop of the multiply sequence. Negative logic is used (i.e., (df = -l) = when df = -l) to conform with the negative logic which is used throughout Delayed Control. Third Row No. 37 = (d = -1) = d 1 d (} (No. 29) -130- No. 33 = (d - -3) = ^(No. 28) No. 3U = (d < -3) = d v d 1 (No. 28) No. 39 = (d = 0) = d Q (No. 26) (No. 3l) No. 36 = (d = -2) = d^No. 29) No. 9 = (-l+5dl+l+) = (-1+5 < d < 1+1+) = d 6 (No. 16) (No. 1+2) v dgd^d d (No. 1+2) v dg(No. lU)(No. ^1+) No. 35 = (d < -2) = d v d 1 d Q (No. 29) No. 32 = (d = -10 = d d Q (No. 28) No. kO = (d = l) = d Q (No. 30)(No. 31) No. 1+1 = (d = 2) = d 1 d Q (No. 30) No. 38 = (d > 2) = cL v (No. 30) (No. 31) gED = ( g ES)(DgE) Fourth Row No. 31 = (fa5) = [(ea v eb )](No. 2l) v dg(No. l6)(No. 1+2) - [(ea 7 )(eb T )] fa5 = 1 implies that d > 1+1+ This means that fa5 = 1 if d is overflowed, i.e., when the true value of d is > 128. No. 5 = (fal) - d [ea v eb T ] ~ d d 6 (No. lU) v [(ea^eb^] fal = 1 implies that d < -1+6. This means that fal = 1 if d is underflowed; i.e., when the true value of d is < -129. No. 19 = (faU) = & r v d^(No. 17) ~ d" (No. 18) n/ (No. 21 ) fai+ = 1 implies that 22 < d < 1+3 . -131- No. 23 = (fa2,3) = d 6 (No. 21 ) v d (No. 2l)(No. 22) v cL(No. 2*0 fa2,3 = 1 implies that -U5 < d < 21, These four signals are used in the Al step of the add sequence to filter the appropriate case of floating point addition. (See section 5.5) No. 11 = dov = [(ea ) v (eb )] v (No. U3) No. 3 = dov = [(ia" )(eb )](No. M+) dov = 1 implies that d > 128. No. 10 = dz = [(ea )(eb )](No. ^3) No. 7 = dz" = [(ea" ) v/ (eb )] v (No. i+U) dz = 1 implies that d < -129. No. 12 = (d < -61+) = [(ea ) v (eb )](No, 15)(No. U0 v [ )ea )(eb )](No. U3) (d > 0) = d (No. 11) v (No. 10) When gED = 1, many of the decoder outputs defined above are gated into the corresponding F-elements of the ED register. For example, No. 8 = dov is gated into the ESOV F-element when gED = gES v DgE = 1. If the true output ("1" side) of these F-elements has unit value (positive voltage) following this gating operation, then the condition indicated by the F-element name is true with respect to the contents of ES or E depending on whether gES or DgE was performed. The conditions indicated by the ED register refer to the ES register only because gES is used a little more frequently than DgE. When gED = 1 because DgE = 1, these conditions should all read E = -1, E = -3, etc., instead of ES = -1, ES = -3, etc. -132- Fifth Row This row consists primarily of F-elements and cable drivers. One exception is the logic used to form the input to the EDC F-element. EDC = (es = -k)(es = 0)(es = l)(es = 2) This signal is gated into EDC when gEA =1. As explained earlier, the true output of EDC, edc, is used only to control the transition between slow and fast modes of shifting in the A9 step of the floating add sequence. The dov and dz signals deserve special attention. Since the exponent adder operates modulo 256 with the most significant bit position assigned a ■7 weight of -2 , its output, d, may be overflowed in the positive direction (dov = l) even though d appears negative (i.e., cL = l) and conversely. Let d = ea + eb + c where c = 1 or depending on whether C is true or not. In the following case analysis, C will be assumed true or false as required to establish the limits. (A) If < ea < 127 and < eb < 63, then < d < 127 or -128 < d < -65. (B) If < ea < 127 and < eb < 127, then < d < 127 or -128 < d < -1. Note that in both cases the sum overflowed when d fell in a negative range. To detect these cases, the decoder must note that ea and eb are both positive and d is negative. Hence, dov = (ea )(eb )(d ) which agrees with the equation given above . (C) If -128 < ea < and -6k < eb < 0, then -128 < d < or 6k < d < 127. (D) If -128 < ea < and -128 < eb < 0, then -128 < d < or < d < 127. In these two cases the sum is underflowed (i.e., overflowed in the negative dir- ection) when d falls in a positive range. When d is underflowed, the sum -133- represented by the fractional and exponential parts is considered zero. It is clear that dz must have unit value when ea and eh are both negative and d is pos- itive. Thus, dz = (ea 7 )(eb r ) (d_) which agrees with the equation given above. Note that neither dov nor dz can be true if ea and eb disagree in sign regard- less of how C is set. Similar considerations must be taken into account when analyzing the formation of the (d < -6k) and (d > 0) signals. These considerations were over- looked in the original design. This was pointed out by R. H. Farrell and sub- sequently corrected as shown above. One additional comment concerning the timing of the gES and DgE gates is in order at this point. When the exponent adder is being used as a counter to control the number of steps performed in the add, shift, multiply, or divide loops, the flow of information through the adder and decoder may be described as follows. If the inputs to the exponent adder are changed either by gating a new word into EA or by changing the setting of the sD selector, some time must elapse before the adder output is reliable. Additional time is needed before the decoder outputs are reliable. Therefore, the adder output, d, could be gated into ES or E via gES or DgE before the decoder outputs are reliable at the inputs to the ED register. However, since gED = gES ^ DgE, it is neces- sary to insure that gES or DgE remains on long enough for the decoder output to become reliable and set the ED F-elements accordingly. -13U- h. THE LINK MECHANISMS The Link Mechanisms (LM) include gates, selector mechanisms, and con- trol status memory elements. Delayed Control (DC) directs the data flow and processing in the Arithmetic Unit (AU) via the LM. DC requests may determine the state of the LM directly or indirectly through the outputs of decoders. The inputs to these decoders may be the outputs of registers, adders, or status mem- ory elements. Selector mechanism and status memory elements remember their pres- ent state. The outputs of certain status memory elements influence the branch- ing of DC. The setting of one or more of these elements during the present con- trol step partially determines the sequence of future control steps. If the design of DC were completely speed-independent, each request would be answered with a reply of the same parity indicating the action request- ed has been completed. The goal of speed-independence was only partially real- ized. With few exceptions, a direct or indirect request to a link mechanism is answered with a reply of the same parity which indicates that at least part of the link mechanism logic has responded. This reply does not indicate completion of the resulting change in state of the AU and/or control path. DC also sends by- pass requests to certain LM to obtain a reply without changing the LM output. In terms of physical location, the LM occupy a central position in the Arithmetic Subsystem. They collect requests from DC and send their outputs to the AU and their replies back to DC. The gates and selector mechanisms are lo- cated in the Q, A, and S elevels of bays 6c, TC, 8C, l6FC, and l6RC. The con- trol status memory elements are primarily located in Q8F and Q8R. Certain spec- ialized status memory elements such as EXA, EXF, and EXR are located with the associated control area logic. To facilitate the collection of requests and the distribution of re- plies, four request areas (generally covering one A level chassis) and thirteen reply areas were established during layout of DC. The requests from various -135- control areas are fed to secondary AND's (actually A s followed "by inverting cable drivers) located in one of the four request areas. The outputs of these second- ary AND's then feed a primary AND next to the prime driver(s) or the inputs of the link mechanism being considered. The reply signal is distributed by one to three cable drivers to NOT circuits located in the various reply areas. The reply — * signals at the output of these NOT's then feed the A 's and OR's in the appro- priate control areas . The four request areas are: RQ-1 located in the A9F chassis, RQ-2 lo- cated in A15F, RQ-3 located in A15R and part of AlUR, and RQ-U located in A10R. The thirteen reply areas are: RP1-1 in Q9F; RP1-2 in S9F; RP2-1 in Q17 and Ql6F; RP2-2 in Sl6F and S15F; RP2-3 in A15F and Ql6F; EP2-h in A17, Al6R, S17, and Sl6R; RP3-1 in Ql6R and Q15R; RP3-2 in Sl^R and SlUR; RP3-3 in AlUR and QlUR; RPU-1 in Q9R and Q10R; RP1+-2 in S10R and S11R; RP^-3 in A11R and Q11R; and EPk-k in A9R and S9R. Request and reply references are shown in the input and output tables at the left and bottom of the LM drawings. Unfortunately, these tables differ from those appearing on AU and DC drawings. A key for the information contained in these tables appears in the upper and lower left-hand corners of all LM draw- ings. For additional information regarding the layout of the LM and the asso- ciated logic, see File No. 528, "A Description of the Logic Drawings for the Arith- metic Subsystem" by J. 0. Penhollow. A word of caution is in order concerning the signal notation for re- quests, replies, and outputs of LM. Negative logic notation is used in DC and positive logic notation is used in the AU. For example, DIO-a or gA-U (D-II87) will turn gA "on" when they have a negative voltage level, i.e., DIO-a = or gA-U = 0. The gA outputs shown at the top of the drawing are "on" when they have a positive voltage, i.e., when gA = 1. If gA = 1, the outputs of the sA selector as described in section 3.1.2.6 are allowed to set the A register F- elements. In response to a "0" request by DIO-a or gA-U, a "0" reply such as gAr-c or gAr-cla is returned to DC. When all of the LM requested by a given 1 ^c control area have returned "0" replies, the control area responds by sending out a "1" request signal which turns off gates (so that gA = 0) and places the selec- tor mechanisms and status memory elements in a memory state, i.e., allows them to retain the state to which they were set by the "0" request. The LM replies respond to a "1" request by returning a "1" to DC which conditions the next control area. Although a gate was used as a specific example, similar statements apply to the requests, replies, and outputs of selector mechanisms and status memory elements In the next three sections the logical operations of a sample gate, se- lector mechanism and control status memory element are discussed. Special LM are also considered. ^.1 Gates There are seven regular gate logic drawings: gA (D-II87), gQ (D-1188), gS (D-II89), gR (D-1190), gEA (D-1193), gE (D-1195), and ESgEM (D-1500). The op- eration of gQ is discussed as an example. Assume that gQ is off initially such that all request inputs at the left side of the drawing are "1", all replies (i.e., NOT outputs) at the bottom of the drawing are "1", and all gQ outputs at the top of the drawing are "0". Assume that an MPY order is being executed and control area M3 (D-128l) has just become active. The M3-a output goes from "1" to "0". This request is fed to the secondary AND cable driver in RQ-2 (Al6F) . Its output, gQ-2, goes from "1" to "0" and feeds the primary AND in the A8C chassis. The output of this AND, RQ-gQ also goes from "1" to "0". This causes gQ to go from "0" to "1" at the gate inputs of the F -elements in the Q register. Under slow reply conditions, the change from "1" to "0" at the otuput of the D 2 in Q5C is fed to the INHIBIT -AND -OR in A8c causing the output of this element to go from "1" to "0" provided the MSAQ inhibit signal from the console is "1". The "0" output of the INHIBIT-AND-0R feeds three invert- ing cable drivers and a collector follower. The cable drivers feed seven NOT cir- cuits in various reply areas. In particular, the gQR-bla reply goes from "1" to ■137- — * "0" and feeds the A and OR circuit associated with control area MU (D-128l). When all reply inputs to the two OR's in M^ are "0", the output of the second OR causes the Eccles-Jordan in M3 to set to a "0" so that the associated M3-a output changes from "0" to "1". By following this "1" through the gQ logic, it is easily seen that gQ goes from "1" to "0", thus closing the gate to the Q register while the replies including gQr-bla go from "0" to "1". When all of the )f reply inputs to the A in Mk are "1" its output goes to "0" since the Mk Eccles- Jordan was set to "l" while M3-a was "0". This represents the beginning of the next control step in the multiply sequence. Under fast reply conditions, the gQr input to the INRTBIT-AND-0R is disconnected and the output of the primary AND, RQ-gQ, is connected in its place. This eliminates five collector delays in the feedback loop but sacrifices a check -2 on the prime gate driver and one of the D drivers. Note that the exponent gate logic always operates under fast reply conditions. The MSAQ inhibit input is controlled from the console and is used dur- ing step-by-step sequencing of DC. As long as MSAQ = 1, the gQ replies are al- lowed to go from "1" to "0" in the normal manner. If MSAQ = 0, the gQ replies are held on a "1" until the operator removes the inhibit causing MSAQ = 1. When a control area requests gQ and MSAQ = 0, the Q register F-element gates are held open. Likewise, any other LM requested by this control area are held in the ac- tive state. The Eccles-Jordan associated with the control area cannot be set to y "0" and thus allow the A. to produce a "1" request until the gQ reply is allowed to change from "1" to "0" . For additional information concerning inhibit sig- nals, see File No. U09, "Manually Stepping Through DC" by R. E. Swartwout. In certain control steps gQ is done conditionally. The logical struc- ture of DC is such that a reply from the gQ logic is needed in these cases whether the gate is performed or not. A bypass gQ request is used to obtain the reply when the gate is not performed. Note that if either By gQ-2 or By gQ-*+ go from "1" to "0", the gQ replies (such as gQr-ala, etc.) go from "1" to "0" -138- but gQ at the inputs to the Q register F-elements remains "0" . In the remainder of this section, we consider four gate logics which have some irregularites and six special gates which do not appear on separate drawings . The DgE and gES drawings show an output to EDM (D-I50U). When either DgE or gES is requested, the gED gate shown on EDM is also requested. Note that gED = gES ^ DgE as discussed in section 2.2.U. The -6UgES gate logic also appears on gES (D-II9A). Since this signal feeds the clear inputs of the ES register F-elements, it is active when -6UgES is "0". Therefore, a LEVEL RESTORER appears in place of a NOT on QJR. A "0" request for -6^-gES produces a "0" gES reply in DC as indicated by the AND ahead of the cable drivers in A8C f The FlgMEM and RESgOUT logic appears on FRgMF (D-II9U). The former is used only during decode (Gl) while the latter is used only during store (S9). The collection of requests and the distribution of replies is limited according- ly. The primary gate drivers are located in the Gl (D-1276) and S9 (D-128U) con- trol areas. The R • MgM and R v MgM gate logic is shown on RgM (D-II91). If both R • MgM and R ^ MgM are requested similtaneously, RgM is accomplished as dis- cussed in section 3.1.2.2. During the clear add, (b), sequence, R • MgM or R ^ MgM may be done separately. The conditional logic that decides which gate is actual- ly performed during B2 appears at the left edge of the RgM drawing. B2-RgM must be "0" before any output of this logic can assume a value other than "l". The a„gA gate is shown on HAS (D-1522). It is used to copy the con- tents of A into A during the execution of a shift instruction, a store in- struction which uses the shift, (f), sequence, or a BLS order. The black gate symbol by the A F-element indicates that a gA is "0" when active. The OgQ, Qi , gate logic appears on LQR (D-I52U). This gate clears the Qi „ and Q, , F-elements to zero during decode (Gl) and K3 step at correct overflow, -139- (k), sequence when clearing an SSC or ASC order. The OgQ* _Qi . -k signal is "0" when active. The m, igEM^ gate is used only during El of the exponent arithmetic, (e), sequence. The gate driver appears in the El control area (D-1270). This gate allows eight -bit exponents to "be brought into the EAU from Fl. When m. . gEM_ = 1, the contents of M are copied into EM. This overwrites the Fl, bit that was placed in EM^ and E1VL during Gl via FlgMEM. (See section 3.2.2.1.) The gCB logic appears in the carry-borrow section of SEC (D-1527). When gCB = 1, the output of the carry-borrow logic is transferred to the CB F-element (see section 3.1.13). As shown on SEC, this gate is only used during the All step of the add, (AJ, sequence and the D13 step of the divide, (d), se- quence . 1 The gH gate request occurs only during the D6 control step of the di- vide, (d), sequence as shown on D-1272. The gate driver and the H Eccles-Jordan appear on DPa (D-1507). When gH = 0, H is set to "1". This is done to in- sure proper recoding of the first quotient digit as discussed in section 3.1.17. k.2 Selector Mechanisms There are seven drawings of selector mechanism logic. Four selector mechanisms are associated with the MAU: MsA-I (D-II76), MsS-I (D-II78), sAQ-I (D-II80), and sSR-I (D-II82). Their companion drawings showing the distribution of selector gate signals to the selectors in the MAU are: MsA-II (D-1177)* MsS-II (D-1179), sAQ-II (D-ll8l, and sSR-II (D-II83).. The three selector mech- anism drawings associated with the EAU are: sD (D-118^-), sEA (D-II85), and sE (D-II86). These drawings also show the distribution of the selector gate sig- nals. In all cases, the selector may be viewed as an n-state Eccles-Jordan •lUO- memory element where n is the number of selector options. Certain peculiarities arise in connection with the MsS selector mechanism because the MMsS request causes the MsS and MsS options to be turned on together. This is discussed in detail below. The basic logic for the selector mechanisms was suggested by Professor D. E. Muller. It was developed and modified to fit the needs of the order code and a "speed-independent" DC by R. E. Swartwout. Each active request ("0" input) causes the selector mechanism to re- lease its old setting and check that all selector gate signals (outputs) are "0", and then establish and latch the new setting. These events occur sequentially to prevent overloading the selector emitter followers at the associated register or adder output. If the old and new selector settings were on simultaneously, the emit- ter current into these transistors would be twice the design value. After the selector mechanism has theoretically latched in its new state, the associated reply goes from "l" to "0". When this indication is received by the control area following the one which initiated the selector request (i.e., the active control area), it is mixed with other replies in an OR. When the output of this OR goes from "1" to "0" to the Eccles-Jordan in the active control is set to "0", causing — x- the request at the A output to change from "0" to "1". This returns the active input to the selector mechanism to "l" and leaves the state of the selector un- changed, but causes the reply to go from "0" to "l". When all activated link y mechanisms are relaxed such that their replies are "l", the output of the A in the following control area goes from "l" to "0" which initiates the next control step. The method of collecting requests and distributing replies is similar to the one described for the gates. It should be noted that many of the selector — * requests are made by decoders which are conditioned by 'certain control area A 's. Examples of these are the U- and 6 decoders and the division predictors shown on u9D (D-I506) and DB2 (D-I507). The use of bypass requests and console inhibit ■lUl- signals is the same as described for the gates. Connections for fast and slow replies also exist for the selector mechanisms associated with the MAU. As for the gates, the shorter reply time is achieved by eliminating the prime dri- —2 ver, a D driver, and a return cable driver from the reply chain. The fast reply connections are indicated by dotted lines on sAQ-I (D-ll8o) and sSR-I (D-II82). The replies for the EAU selector mechanisms are all fast in this sense. As an example of how the selector mechanisms operate, consider MsA (D-II76). Assume MsA is set to OMsA initially, meaning that the b outputs of the MsA selector in the MAU are all "0". Let MSAQ, = 1 (i.e., the console inhi- bit switch is "off"). Furthermore, assume the inputs to the restoring AND's shown down the center of the drawing are all "l", and the replies at the outputs of the NOT's across the bottom of the drawing are also all "1". It follows that RQ-2MsA = RQ-MsA = RQ-OMsA = RQ-MsA = RQ-KgA = RQ-MsA-a = RQ-MsA-b =1. At the top of the drawing, 2MsA = MsA = MsA = KgA = 2MsAr = MsAr = MsAr = KgAr = OMsA = OMsAr = 0, while OMsA = KI = 1. At the right side of the drawing, we have RP-2MsA = RP-MsA = RP-OMsA = RP-MsA = RP-KgA = 1, If DlU-ByMsA = ByMsA-U = 1 (i.e., these bypass requests are not active), then MsAr-a = MsAr-b = 0, The direct reply to M6 and Dll, MsAr-b, and the NOT outputs are all "l". At the bottom of the selector mechanism logic, KgA = ca = and KgA = 1. The destina- tions of these outputs as well as the reply, MsAr-b, are shown in the "Direct Connection" boxes at the bottom of the drawing. Under the above conditions, the selector gate signals denoted by 2MsA, MsA, MsA, and KgA are held to "0" by the OMsAr which is also "0". Note that OMsAr feeds each of the four nonrestoring AND's which appear in a line down the center of the MsA-I drawing. Now suppose that one of the following MsA request inputs goes from "l" to "0": MsA-ul, MsA-.u2, MsA-0, MsA-p, or DlU-MsA. The source of these requests -lU2- is indicated by the input table. RQ-MsA goes to "0" which in turn causes RQ-MsA-b to go to "0". RP-MsA remains a "1" momentarily since MsAr is still "1" at this point. 2MsA, MsA, MsA, and KgA remain at "0" and KI remains at "1" because OMsAr is still "0". RQ-MsA-b going to "0" changes OMsA from "1" to "0" and causes OMsA = OMsAr to change from "0" to "1". The old setting has been re- leased at this point. Note that RP-OMsA and all other such signals are still "1". When OMsAr goes to "l", 2MsA, MsA, and KgA remain at "0" and KI remains at "1" since RQ-MsA = RQ-MsA-b = 0. However, MsA goes from "0" to "l". As shown on MsA-II (D-1177), MsAr also goes from "0" to "l" causing the MsAr NOT output on MsA-I (D-II76) to go from "1" to "0". Since RP-MsA is still "0", RP-MsA also goes from "1" to "0" and causes all of the replies to change like- wise. At the same time, the "0" MsAr signal is fed back to the nonrestoring AND's whose outputs are RQ-MsA-b and KgA. This is the latch signal which holds the MsA selector setting when RQ-MsA goes back to "1". The latter change occurs when the "0" reply in conjunction with "0" replies from other active link mech- anisms causes the request from the active control area to change from "0" to "1". When this causes RQ-MsA to go from "0" to "1", RP-MsA changes from "0" to "1" and causes all the reply outputs to follow. This completes the active cycle of the selector mechanism. If the next request to the MsA mechanism is also for MsA, the MsA reply changes from "l" to "0" much faster. Since MsAr = 0, RP-MsA changes to "0" as soon as RQ-MsA does. This is simply a consequence of the fact that the selector mechanism is already in the state requested. If the next request is not MsA, a process similar to the one described above will yield the new set- ting. It is worthwhile to note that MsA and ca have the same parity. The ca signal is the carry input in the hk — position of the A adder as shown on LAS (D-1523) and LAD (D-1212). In complement arithmetic, the subtraction of M from A -1U3- is accomplished by adding M (bitwise complement) to A with a carry in the least significant position. Therefore, M is subtracted from A when MsA = ca = 1. (See section 3.1.5.) The delay shown in the RP-KgA output line is necessary to insure that the assimilated value of A appears at the A-adder output before starting the next control step. This is especially important if the next step involves a control branch which is conditioned on the a-logic outputs shown on DPCC (D-1507), and discussed in section 3.1.9. An example of this is the Kl control step shown on D-1279. Since KgA is usually requested by the same control area that requests gA, the time required for the A-adder outputs to become reliable is quite long. The A register must set to its new value feed the carry generator which in turn must feed the A adder. There is no way of knowing when the A adder outputs are reliable so the reply must be sufficiently slow to cover the worst case con- dition. Because of its location, the delay in the RP-KgA output line only needs to be half of the total delay required under worst case conditions. When KgA is requested, the "l"-"0" and "0"-"l" changes on RP-KgA are both delayed by the amount specified even though KgA may have been set previously. A delay is neces- sary under the latter condition because all of the stored carries gated into A at the time of the second KgA request are "0". This change in A must flush through the carry generator and A adder before the output of the latter is re- liable. When the second request is for any other setting of the MsA mechanism, the reply time is not influenced by the KgA delay. Furthermore, this delay does not slow down the KgA latch-back signal, KgAr. The KgA and KI signals shown at the top of D-II76 are logical comple- ments. When KgA = 1, the non-stored carry outputs of the A adder represent the assimilated value of the A register. The stored carry outputs, <X , would be -ikk- equal to the even-numbered b. if allowed to operate normally. Since these car- ries have already been taken into account by the adder, the KI = signal is used to inhibit them. Therefore, a. = for all i when KgA = 1. The MsS selector mechanism logic (D-1178) is complicated by the need to set MsS and MsS simultaneously with cs = when MMsS is requested. This causes a field of units to be added to the contents of the S register which amounts to subtracting a unit in the hk — position. The NOT order which does a bitwise complement of the operand in M requires that MsS be set with cs = 0. Furthermore, the SUB, SSC, CSB, CST, STN, MPY and all divide orders use either MsS or 2MsS with cs = 1. During the terminal steps of a case h addition and dur- ing quotient round-off, it is convenient to allow cs = 1 with OMsS = 1, This corresponds to the CS request which adds a unit in the UU — position. The speed-independent realization of the MsS selector mechanism uses two Eccles-Jbrdans called MO and CS. There is no restriction on the order of the requests except a CS or MMsS request must always be followed by the clear request, KMsS. The latter returns the mechanism to the OMsS state and insures that MsS and MsS selector gate signals are both "0". There are four selector replies: MsSr, MMr, CSr, and KMsSr. The MsSr signal corresponds to MsAr and is used most frequently. The remaining replies are used in pairs. When 2MsS; MsS; OMsS; M; CS; MsS; or 2MsS is re- quested, MsSr changes from "l" to "0" while MMr, CSr, and KMsSr all remain at "1". If CS is requested, only CSr changes from "l" to "0". If MMsS is re- quested, only MMr and CSr go from "l" to "0". When KMsS is requested, only KMsSr and CSr go from "l" to "0". The By-MsS, By-MM, and By-CS requests also cause the corresponding replies to change from "1" to "0". There is no con- sole inhibit associated with MMr, CSr, or KMsSr. The MO memory element has a reply output and is normally in the "1" .1*5- state. It is set to "0" only when MMsS is requested. The CS memory element is set to "0" except after a MsS, 2MsS, or CS request. As an example of how the MO and CS memory elements function, consider an MMsS request followed by KMsS. As in the MsA example, assume the mechanism is initially set to OMsS and all requests and replies are "1". MO is set to "1" (i.e., mo = l) and CS is set to "0". An active MMsS request causes RQ-MMsS to change from "1" to "0". This in turn changes RQ-KMMsS from "l" to "0" which yields CSr = since cs = ini- tially. At the same time, MO is set to "0" such that mo = and MOr = 0. Since mo goes to "1" before MOr goes to "0", KMsSr remains at "1". The output of the nonrestoring OR which has RQ-MMsS and mo as inputs (appearing a little left of center on D-II78) now changes from "l" to "0". The output of the non- restoring AND which it feeds changes in a like manner and causes OMsS to go from "1" to "0" while OMsSr goes from "0" to "l". The latter output feeds the nonrestoring AND directly to its left and causes its output to change from "0" to "1". This AND output then causes both MsS and MsS to change from "0" to "l" since mo = 1. The resulting replies -- MsSr and MsSr -- go from "1" to "0". This does not change RP-2MsS; RP-2MsS; RP-OMsS; RP-MsS; RP-MsS; RP-MsS, CS; or KMsSr which have remained at "l" during the preceding action. However, MsSr = MsSr = MOr = mo = causes MMr to go from "l" to "0". The "0" MsSr and MsSr signals also feed the nonrestoring AND having (mo) ^ (RQ-MMsS) as an in- put. This latches the MMsS state. When RQ-MMsS goes from "0" to "l", CSr changes from "0" to "1". Furthermore, MOr returns to "1" causing MMr to follow. KMsS must be the next request. Incidentally, this request is used when DC is cleared. When RQ-KMsS goes to "0", RQ-KMMsS also goes to "0" and sets CS to "0". (The latter operation is necessary in case CS was the previous re- quest.) This yields CSr = 0. At the same time, RQ-KMsS causes MsS and MsS to change to "0", and holds 2MsS and 2MsS on "0" while MsSr and MsSr change from -1U6- "0" to "1". The latter changes permit OMsS to go to "1" with OMsSr changing to "0", thus latching the new state. Since OMsSr = RQ-KMsS = 0, MO is now set to "1" such that mo = MOr = 0. This causes KMsSr to change from "1" to "0". When RQ-KMsS returns to "1", RQ-KMMsS and CSr go to "l". Furthermore, RQ-MO goes to "1" which causes MOr and KMsSr to change from "0" to "1". The mechanism is left in the OMsS state -- meaning that the t. outputs of the MsS selector in the MAU are all zero. In the sAQ, or sSR mechanisms a state may correspond to different set- tings for the associated A and Q or S and R selectors. In all cases, the gate signals are defined for sA and sQ, or sS and sR selectors in the MAU. For example, the sSR mechanism shown on D-1182 has a state called OAsSR. In this state, the sS and sR selectors in the MAU are set to OsS and AsR respectively. When gS = gR = 1, zeros are placed in the S register and the output of the A- adder, OL, is placed in the R register. The sD mechanism (D-118U) is similar to the MsA and MsS mechanisms except that an EMsD request does not cause a complement carry to be added to the least significant position of the exponent adder. This request sets the sD mechanism to the EMsD state which insures that eb . = em. as shown on EAU (D-1502). 11 If the contents of EM are to be subtracted from the contents of EA, EMsD and C are set to "l". The true output of C (D-I285) represents the complement carry into the — position of the exponent adder as discussed in section 3.2.3. Many of the states in sD, sE, and sEA represent constants at the out- puts of their associated selectors. For example, 2sD produces eb. =0 for st i = and 2 < i < 7 while eb. = 1. Since the 1 — bit position in the EAU has a weight of 2, the effect of this selector setting is to add 2 to the contents of EA. As a second example, 6sE causes the 1 — and 2 — inputs to the E register to be "1" while all others are "0". Thus, when the sE mechanism is in this state and gE is perform, the E register is set to 6. -li+7- U.3 Control Status Memory Elements The control status memory elements are Eccles-Jordans with reply out- puts. The circuit schematic and logical structure of this element is shown on drawings B-95^ and D-U36. If EJ is a control status memory element, the re- quest inputs to the "l" and "0" sides are called EJ and EJ respectively. The reply is called EJr. The outputs from the "1" and "0" sides are called ej and ej respectively. In the memory state, EJ = EJ = 1 such that ej and ej retain their previous values while EJr = 1 Assume that ej = 1 and ej = 0. If EJ now goes to "0" while EJ = 1, ej changes to "l" while ej and EJr remain at "1". After EJ = and ej = 1, ej goes to "0" causing EJr to change from "1" to "0" since EJr = (EJ v eJ)(EJ ^ ej). The "0" reply indicates the memory element has been set to the new state and theo- retically latched. When EJ goes back to "1" with the EJ input remaining at "1", the new state is retained and EJr goes to "1". This completes an active cycle for the Eccles-Jordan with reply. As in the case of selector mechanisms, the EJ reply goes to "0" much faster when the Eccles-Jordan is already in the state requested. The method of collecting requests and distributing replies and out- puts is similar to that described for gate and selector mechanisms. As opposed to the other types of link mechanisms, some control status memory element out- puts feed logic in both the AU and DC. By feeding the reply output to an AND, bypass requests are possible. These requests enter the AND, causing its out- put to change from "l" to "0" to "l" without changing the state of the memory element . All except one of the control status memory elements (these do not include DCRFL, INFL, and DCRS) are set to both "0" and "l" by DC. The excep- tion is 0V (D-1291) which is set to "l" by DC but is reset to "0" (i.e., cleared) -ll+8- by AC. OV is also the only status memory element whose reply may "be inhibited from the console. This is accomplished by making MSOV = 0. A brief description of the function of each control status memory element follows . The C status memory element appears on D-1285. It is conditionally set to "0" or "1" during Gl (D-1277). During the execution of DC orders, it is set to "1" whenever a carry into the least significant position of the exponent adder is needed. The c output represents this carry as shown on EAU (D-1502) and discussed in section 3.2.3. The c and c signals are also used as inputs to the conditional logic of the K2 (D-1279) and R2 (D-1282) control areas. CL and CR shown on D-1286 are used during the circular left and right shift operations for case 3 addition as discussed in sections 3.1.12 and 5.5. CL is set to "1" during A9 (D-I269) to condition the paths a -> R. , a -* R, , and a ~* Qlo> a n -* \h' It i- s se t to "0" during All. Likewise, CR is set to "1" during A10 (D-I269), to condition the paths a -* S , a -* S and a_n - A_ x , a _ 2 - A . CR is set to "0" during Gl (D-1276_, Kl, or K3 (D-1279). The cr and cr outputs are also used as inputs to the conditional logic of A9 and A10. To increase the speed of the add loop (A9 and A10) bypass logic for the CL and CR replies is also provided. The DL memory element shown on D-I287 is set to "l" to condition the paths V -> Si , v„ -> Si 1 and p ->■ A. , p -> A, , . DL is conditionally set to "0" or "1" during Gl ( D-1277) as well as D3 and DIG. It is always set to "1" during A13, D6, and F3, and is always set to "0" during A6 and Dl6. The dl and dl outputs also feed the conditional logic in the A9, All, D5, Dll, Fl, F2, F8, Kl, K2, Rl and R2 control areas. In many cases, dl and dl determine whether gQ and gR are performed or bypassed. If dl = 1 (i.e., if DL is true), a double length left shift in S,R and A,Q is possible, so gS,gR and gA, gQ are used. If -1U9- dl = 0, only a single length left shift is S and A is possible, so gS, By gR and gA, By gQ are used. The EXA, EXF, and EXR status memory elements shown on D-1288 control the exit from the inner loops of the '(A), (f), and (r) sequences respectively. The exa and exa signals feed the A s of All and A9 (D-1269) respectively. The A s of F3 and Fl (D-127^) have exf and exf as inputs. Likewise, exr and exr feed the A s in R3 and Rl (D-1282) respectively. Note that EXA and EXR are set to "0" when DC is cleared. EXF is set to "0" by the Gl request which sets the Fl Eccles -Jordan to "0". In general, the EX memory element is set to "0" or "1" prior to enter- ing the associated control loop. If ex = 1 at the time of entry, the loop is bypassed. For example, this may occur when entering the normalize, Qt), loop. If exr = 1, upon entry from Gl, control passes immediately to R3 and on to the first control step in the (d), (m), (sf), or (v) sequences. If ex = at the time of entering the loop, the first and second steps of the loop are executed. If the conditions for setting EX to "1" arise during the first step, a request to set EX to "1" is made by the second step (such as A10, F2, or R2), and exit from the loop occurs on the third step since ex = 1. If the conditions for set- ting EX to "1" do not arise during the first step in the loop, control continues to cycle through the loop until these conditions do arise on some odd-numbered step -- say 2k + 1. During the 2k + 2 step, EX is set to "l". Since ex = 1, exit from the loop occurs during the 2k + 3 step. As shown on D-I289, the J memory element is conditionally set to "0" or "1" during Gl (D-1277) and is always set to "1" during VU (D-128o). The and j outputs feed the conditional logic associated with the Gl, Dl, Rl, SI, S5, S9, VI and V3 control areas. These signals condition the choice of R • MgM or R v MgM during B2 as shown on RgM (D-II91). They also feed the store logic shown on HQR (D-I525) as discussed in section 3.1.2.1*+. -150- The N memory element appears on D-1290. It is conditionally set to "0" or "1" during Gl (D-1277) and is unchanged during other control steps. The n and n outputs influence the conditional logic in the Dl, Ml, Rl, SI, S5, and S10 con- trol areas. The n signal also feeds the store logic shown on HQR (D-1525) and is discussed in section 3.1.2.1U. t Both OV and OV appear on D-129L They are used for overflow indication. The effect of the ODIR signal on the OV request input and the OV bypass logic is considered in section 5.1, Both OV and OV are set to "0" when DC is cleared. OV is conditionally set to "1" or bypassed during D7, D15, E3, F2, F5, K2, M3, and S9„ It is conditionally set to "l" during D5 and conditionally by- passed during Kl, K2, and M8. The ov output is used only by AC to detect accu- mulator overflow (both fractional and exponential). Only AC can set OV to "0" by causing Reset OV = 0. The OV memory element is conditionally set to "0" or "l" by the Fl (D-I27I+) control step only. It is used as a buffer storage element for OV dur- ing the inner loop of the shift, QO, sequence. Its outputs are used in F2 con- ditionally to bypass OV or set it to "l". The RO memory element appears on D-1292. RO is set to "0" when DC is cleared. It is set to "1" whenever the fraction in A is to be rounded. In parti- cular it is set to "1" during Dl, Ml, and VI. It is conditionally set to "0" or "1" during SI, and is always set to "0" during D3, M3, S9, and V3. The ro output conditions the round-off logic shown on ZDR (D-I505) and discussed in section 3.1.7. The TC memory element also appears on D-1292 „ It is conditionally set to "0" or "1" by Gl ( D-1277). It is always set to "0" during Sll (D-128U). Ex- cept for the CAE and CSE orders, TC is set to "1" for "store-clear" type instruc- tions (STC, ASC, or SSC). The tc and tc outputs feed the conditional logic in the K2, SI, and S10 control areas. As shown on D-1293, "the X memory element is conditionally set to "0" 'or "1" by Gl (D-1277). It is always set to "l" during DU (D-1271) and to "0" -151- during S6 (D-1283). The x and x outputs feed the conditional logic in the Dl, D2, D3, SI, andS5 control areas. They also affect the logic between the low ends of R and FO as shown on LQR (D- 152*0 and discussed in section 3.1.2.1^. The Z memory element is shown on D-129^. It is set to "l" when the fraction in AQ becomes zero or when the exponent becomes less than -128. It is also set to "1" in DT (D-1272) if ZA is set to "l" (i.e., za = l) during (R) as as consequence of A containing zero. Z is set to "0" by any instruction which uses the Qb) sequence and by the LAL instruction. The z and z outputs feed the conditional logic associated with the Al, A2, A3, D5, D6, Fl, Kl, K2, Ml, M3, Rl, S5, S7, and S9 control areas. The z output also goes to AC. The ZA, V, and ZV status memory elements appear on D-1295. All three of these serve very special purposes. Note that V and A- are cleared to "0" by cdc. ZA is always set to "0" during Gl (D-I276). It may be set either to "0" or "1" during R2 (D-I282). The latter setting occurs only when a single length normalization is being performed and A is found to contain zero. (A single length normalization is used only when Rl is entered from DU of the divide sequence.) The za and za outputs feed the conditional logic in D5, D7, and Rl. The V memory element is set to "l" during D13, S2, and also during SI if tc = 1. It is set to "0" during D17, Sll, and also during SI if tc = 1. If tc = 1 and XCH is not being executed, V is also set to "0" during S10. The c! and B outputs influence the formation of the a and a signals as discussed in section 3.1.2.6 and shown on HAS (D-1522). The <$ output is used to close the paths a, -+ R and a, , -* R during S2 (D-128U). This latter use is mentioned in section 3.1.2.12 and is shown on HQR (D-I525). The A memory element is set to "l" by the request from D10 ( D-1272) and reset to "0" by the request from DlU (D-1273). The (6 -a) output allows (3, to feed the input to R> p during the inner loop of the (D) sequence. This is discussed in section 3.1.17 and appears on LQR (D-I52U). The (6 -b) output modi- fies the function performed by the carry-borrow logic (D-I527) during division -152- as discussed in section 3.1.13. 6, appears on D-1296. It is conditionally set to "0" or "1" during Gl (D-1277) and V3 (D-1280). It is always set to "1" during P£ (D-1268). I and 0. outputs are inputs to the conditional logic associated with the Dl, D2, D3, D5, Ml, PI, Rl, S10, and VU control areas. They also feed the Q decoder as shown on [xQD (D-I506) and discussed in section 3.1.1^. 6 is shown on D-1297. It is conditionally set to "0" or "1" during Gl (D-1277). Its state is never changed during the execution of an instruction. The 9 and 9 outputs feed conditional logic in the B3, Dl, D2, D3, D5, Ml, PI, Rl, SI, and S10 control areas. These signals also feed the 0-decoder as shown on U0D (D-I506), and condition the choice of R • MgM or R v MgM during B2 as shown on RgM (D-1191). The A memory element appears on D-1298. It is conditionally set to "0" or "l" during Gl (D-1277) and is not affected by other control steps. The \ and \ signals are inputs to the conditional logic in the Bl, B2, B3, Fl, F2, Fk, F5, SI, S5, S7, and S9 control areas. The \ output also feeds the end connection logic shown on HAS (D-1522) and discussed in section 3.1.2.8. The [X and Q, memory elements are shown on D-1299. These elements play very special roles. The former is used only during the \W) sequence while the latter is used only during the '" A) and (fJ sequences. They are Tooth set to "0" when DC is cleared. In Ml (D-1281) u is always set to "1". It is likewise set to "1" dur- ing M6 until the final pass through the multiply loop during which u is set to "0" . The [x output controls the input paths to Q. p and R, during the multiply loop (M5 and M6). This is discussed in section 3.I.I5 and appears on LQR (D-I52U). The Q memory element is conditionally set to "0" or "1" during A9 (D-1269) and Fl (D-127U). The Q and Q outputs are inputs to the conditional logic of the A10 and F2 control areas as discussed in sections 5.5 and 5.8. ■153- 5. DELAYED CONTROL Delayed Control (DC) obeys the orders it receives from Advanced Con- trol (AC) by executing a partially ordered sequence of micro-operations in the Arithmetic Unit (AU)via the Link Mechanisms (LM). The AU and LM are discussed in the preceding sections. Each of the three types of micro-operations is asso- ciated with one of the three types of LM. The micro-operations are: the open- ing and closing of a register or memory element gate (such as gA), the setting of a selector mechanism (such as UAQsSR), and the setting of a control status memory element (such as DL or DL). A set of micro-operations is called a con- trol step and is represented by a box on the DC Flow Chart. The time ordering of the micro-operations within a control step is not important so long as all memory elements (including selector mechanisms) which may change as a conse- quence of these operations are allowed to achieve their ultimate state before the active phase of the step is terminated. In particular, this means the F-element gate must remain on long enough for the input logic to settle and set the F-element. An ordered sequence of control steps is called a control sequence. As shown on the DC Flow Chart, there are thirteen control sequences ranging from one control step for decode to twenty control steps for divide. The names and abbreviations of these sequences are listed below. -15^ Floating Point Add ------------------ (a) Clear Add ---------------------- (b) Divide ------------------------ (d) Exponent Arithmetic ----------------- Qn Shift _______________ (y) Decode ------------------------ ^q) Correct Overflow and Detect Zero ----------- m Load Q------------- ----------- (l) Multiply ----------------------- (m) Store Preliminaries ----------------- M?) Normalize ---------------------- (R Store ------------------------ (s) Difference Absolute Value -------------- (v) Two or more control sequences are used during the execution of every DC order. Each order begins with the Co) sequence, continues with a series of one or more other sequences, and terminates with the next entry to iGJ . Except for the [EJ sequence and the premature exits from (DJ and (M) , all order sequences must pass through one or more steps of the Ck) sequence before terminating with an entry to (cf) . The [K) sequence detects and conditionally modifies the state of the fractional and exponent accumulator (AQ and E) before starting the next instruction. In particular, modulo 2 fractional overflow in AQ is detected and corrected by a right shift of one base k position. If the compensating exponent ■155' correction causes e > 127, then OV is set to indicate accumulator overflow. If Z is not already set, the (k) sequence checks for a zero fraction in AQ. If so, it sets Z. The [Ej sequence and the premature exits from Qa) and (d) skip (K) and terminate in (G ■) directly. In each case the state of the accumulator is determined and reflected in the settings of OV and Z before the exit to fGM is made. The control sequence series used to execute every DC order are listed below. In each series, the terminal (g) represents the decode step of the next order. The control step from which a premature exit occurs is indicated. A dotted line means that the exit is conditional while a solid line means it is unconditional. The three conditional exits from (k) to \Qj are not indicated. No attempt is made to distinguish the various control paths through \Sj. Table I: Control Sequence Series for DC Orders Octal Code Order Mnemonic Sequence Series 00 CSB 01 CST 02 CAD 03 CAT ©-^ © — * ® — *" © 0^ NOT 05 AND 06 LOR 07 BLS *®^© ^ Premature exit for 10 SUB 12 ADD ' ~>® " J ^~ case - 1 addition Al Ik SSC 16 ASC Al ! >./cS ^ Premature exit for '->®- case 1 addition •156- Table I: Control Sequence Series for DC Orders (Continued) Octal Code Order Mnemonic Sequence Series 11 13 15 IT SBE ADE CSE CAE @ ^©^0 20 MPY ©^©-*®^®^© Premature exit •when multiplier is zero or the multiplicand exponent is -6k M8 1 i .j 21 DIV Return to [R if the divisor is not normal- ized i i n i i Dh i | i i Premature exit when the divisor is zero V D5 D8 s) Premature exit when the divisor is non-zero "but the dividend is zero 22 NDV Unconditional return to [Rj with immediate bypass to Dl if the divisor is normalized 1 -» *J Bh D5 © -» ® -> © D8 -s section ^ 5.13 •157- Table I: Control Sequence Series for DC Orders (Continued) Octal Code 23 Order Mnemonic VID Sequence Series Unconditional return to (R) with immediate bypass to Dl if the dividend is normalized M/ V DU D5 ©^®-*@ D8 I i/ See G) section i -J <r 5.13 25 XCH D-^®-^©-^© 2h 26 27 STR STC STW K — > G 30 31 32 33 STF SIF SEQ SIA ©^®-^®-^©-^®-^© 3^ 35 36 37 Uo STU SAM SAL SEX © — ®-^© Illegal Ul LAL ©^©^©^(g -158- Table I: Control Sequence Series for DC Orders (Continued) Octal Code Order Mnemonic Sequence Series k2 DAV © — ^ ® -^ ® — > ® — ^ ® —' ai ; Premature exit for case 1 addition U3 SRM ® — > ® — > ® — > hk Illegal h6 Illegal k$ LRS 1+7 SRS © — > -^ (k) — > © The logic of DC is "based primarily on the concepts of asynchronous circuit theory as developed "by D. E. Muller and ¥. S. Bartky. As as conse- quence of economy and the desire for speed, the physical realization of DC does not fall within the class of speed-independent circuits unless some unrealistic assumptions are made concerning the generation and distribution of status sig- nals such as link mechanism replies. For a discussion of logic used to realize DC and its departure from speed-independence, see Report 130, "Further Studies in Speed-Independent Logic for a Control" by R. E. Swartwout . It is difficult to talk about the departure from speed-independence Report 75, 'A Theory of Asynchronous Circuits I" by D. E. Muller and W. S. Bartky. Report 78, "Theory of Asynchronous Circuits II" by D. E, Muller and W. S. Bartky. ■159- in DC alone. A complete discussion must consider the design of the Arithmetic Subsystem as a whole. For example, there are not provisions in the Arithmetic Subsystem design for determining when the outputs of registers, adders, and de- coders are reliable. Furthermore, the logic of DC does not check that the out- puts of the status signal distribution systems have reached their correct state before the control step which they govern is initiated. To guarantee that such signals reach their correct state by the time they are needed in some future control step, the present control step and any intermediate steps must last longer than some minimum time. In DC the natural circuit delays and reply paths are usually adequate in this regard. In a few cases, artificial delays have been inserted in reply paths to insure that certain status signals are reliable before the next control step is initiated. The logic drawings for the DC sequences are: (AJ D-1268, D-I269; ® left half of D-1270; © D-1271, D-1272, D-1273; ® right half of D-1270; © D-127^ and right half of D-1275;© D-I276, D-1277, D-1278; ® D-1279; © left half of D-1280; ® D-1281; @ left half of D-1275; ® D-1282; © D-I283, D-1281+; and © on the right half of D-1280. The description of these sequences begins with (g) followed by (b) and (k) to give the reader an introduction to the logical operation of DC. Ab- breviated descriptions of the remaining control sequences are then given in the following order: ©, @, ©, ©, ©, ©, ®, ©, ®, and ® . In correlating the description with the DC Flow Chart (D-1128), the reader is warned that negative logic is used throughout DC but positive logic expressions appear on the chart. A few comments are in order concerning certain symbols which appear on the logic drawings for DC. The cdc input to every control Eccles-Jordan re- presents the set signal which goes to "0" when the "Clear DC" button on the ■l60- console is pressed. The symbols (Y) and QD) represent drivers for indicator lights on the chassis and console. The initial state of DC is established by pressing the "Clear DC" button on the console. This sets the MsA selector mechanism to KgA and all t other selector mechanism to their O-state. It clears CL, EXA, EXR, OV, OV , RO, Z, £k, V, fi, and u. to "0". It also sets all control Eccles-Jordans to "0" except D8 which is set to "l". The net effect is to produce an active re- quest for Gl from D8, i.e., D8 - Gl = 0. Gl responds to this request as des- cribed below and begins to decode the order AC has placed in DCR. 5.1 The Decode Sequence (gJ The sequence consists of one control step, Gl, with a "latch" as shown on G-I (D-1276). It uses and flushes the instruction decoder shown on G-II (D-1278) and the status memory element decoder (encoder) shown on G-III (D-1277). Using the order bits in DCR the instruction decoder selects and ac- tivates (sets to "l") the Eccles-Jordan of the initial control step in the se- quence which follows (g). The status memory element decoder decides for each order the setting of certain status memory elements, whether to activate gEA, and how to set sEA and sD. The particular series of sequences which follow G depends primarily on how certain status memory elements are set. Note that Gl does not affect memory elements such as R0 which are turned on and off by the sequences which use them. The following conditions are always true at the start of the decode (Gl) step: (1) The result of the previous order is held in AQ, and E. For divide orders, the quotient is held in A and E while the remainder is held in R and ES„ (2) The fraction, f, in AQ is not overflowed, i.e. -1 < f < 1. -161- (3) KgA = 1 so the assimilated value of A appears as a at the output of the A- adder. (h) The state of the MsS selector mechanism depends on the previous order or orders and corresponding operands. (5) AC has previously placed the next order in DCR and set DCRFL to "1" to indicate DCR is "full." If the order placed in DCR does not require an initial operand, AC has set DCRS to "1" . AC may or may not have loaded Fl (IN) and set INFL to "1" accordingly. If the order placed in DCR requires an initial operand, then AC must have set DCRS to "0", loaded Fl (IN), and set INFL to "1". A summary of Gl requests as a function of the order in DCR is shown in Table II. A "0" or "1" indicates the requested state of a status memory element. A "l" also indicates a gate request while "0", "E", "EM", or "EM" indicate the requested state of the sEA or sD selector mechanisms. If a check (•/) appears, it means Gl does not request the corresponding link mechanism for the order indicated. In the case of EXR, an "e" appears whenever the normal- ize (r) sequence follows (g) . The "e" indicates that EXR is set either to "0" or "1" according to the state of the accumulator. In positive logic, EXR = z(dl) v (na) v (za)(dl) v n e ? (QZ) v j(QZ). The last row of Table II shows the first active control step after Gl. It is important to note that FlgMEM and OgJ&«Q]i are always turned on and off by Gl. FlgMEM allows the contents of Fl (IN) to be transferred to M and EM in the MAU and EAU. OgQ. ^Qkk clears the two least significant bits of the Q register to "0". Furthermore, Gl always sets DCRFL, CR, and ZA to "0". ■l62- Table II: Gl Requests as a Function of the DC Order h Octal Code 00 01 02 03 ou 05 06 07 10 11 12 13 111 15 u o Mnemonic CSB CST CAD CAT NOT AND LOR BLS SUB SBE ADD ADE SSC CSE FlgMEM 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Gate and Selector w (L) -p CO gEA " sEA 1 y 1 y y 1 y y 1 y y 1 y y 1 y y 1 y y 1 y y 1 1 E 1 1 E 1 1 E 1 1 E 1 1 E 1 1 sD 7 y y y y y y y EM EM EM EM EM EM DCRFL INFL y w C 7 y y y y y y y 1 1 0) •p CR -P CO DL 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ■p EXA y y y y y y y y y y y EXF y y y y y y y y y y y y y y J>5 EXR y y y y y y y y y y y y y y o J i i N 1 1 -P TC 1 1 cd -P CO X 1 ZA A 1 1 1 °1 1 1 1 1 1 1 1 1 °2 1 1 1 1 1 Control . Step Entry <■ Bl — > Al El Al El Al El •l6 3 - Table II: Gl Requests as a Function of the DC Order (Continued) u CD Octal Code 16 17 20 21 22 23 2k 25 26 27 30 31 32 33 t3 o Mnemonic ASC CAE MPY DIV NDV VID STR XCH STC STN STF SIF SEQ SIA 01 (D FlgMEM 1 1 1 1 1 1 1 1 1 1 1 1 1 l -P cd TJ -P C CO °z\ 3 %k 1 1 1 1 1 1 1 1 1 1 1 1 1 l cd (U o gEA 1 1 y y y y y y y y 1 1 1 l -p -P cd o sEA E y y y y y y y y E E E E (D CO sD EM EM y y y y y y y y DCRFL INFL y y y y y y C y y y y y y y y to CR -P cd DL 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -P CO EXA y y y y y y y y y y y y y -p CD EXF y y y y y y y y y y y y y y EXR 4 y e e e e e e e e y y y y J i i i i 8 N l 1 1 1 1 1 0) TC l 1 1 CO -p X 1 1 cd -P CO ZA A G l 1 1 1 1 1 1 1 1 1 6 2 1 1 1 1 1 1 Control . Step Entry Al El <- Rl - — > <- PI — — > ■16k- Table II: Gl Requests as a Function of the DC Order (Continued) Octal Code 3^ 35 36 37 uo Ui U2 ^3 uu ^5 k6 ^7 u u o Mnemonic STU SAM SAL SEX cd LAL DAV SRM H cd LRS SRS H M bO CD H H <u H H w CD FlgMEM 1 1 1 1 1 1 1 1 1 1 1 1 3 p ^ CO 3 u gEA " 1 y 1 y 1 1 1 1 1 y 1 y 1 y 1 y 1 y 1 1 1 y 1 1 o CD -P -p o sEA 7 y E E y y y y y y cd cd O H CD sD 7 y y y y y y EM y EM CO DCRFL INFL y y y y ? y ? 2 C y y y y y y y y CQ CR CD -P cd DL 1 1 1 1 1 1 1 1 1 1 1 -P CO EXA y y y y y y y y y y y y -P 3 EXF y y y y y y y y y y 6 CD H EXR y y y y y y e y y y y y >> J i i 1 i i i i i g N CD s TC CO -P cd -P CO X 1 1 ZA A 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 2 1 1 1 1 Control Step Entry SI SI S2 S2 y LI Rl S3 y Fl y Fl -16 5 - The settings of C, sEA, sD, and the use of gEA are made according to the desired output of the exponent adder when the first control step following Gl is initiated. The accumulator exponent is in E while the exponent from memory is placed in EM by FlgMEM EsEA and gEA place the accumulator exponent in EA while OsEA and gEA clear EA to zero, The output of the exponent adder (EAD) is then de- termined solely "by the setting of sD and C as discussed in section 3.2.3. INFL is set to "0" if the order being decoded requires an initial oper- and; otherwise, Gl makes no attempt to set it. EXA, EXF, and EXR are set ac- cording to whether the Q0, (f), or (r) sequences follow [GJ . The set pattern for J has no clear description, (j)is set to "l" for NOT, LOR, LAL,. DAV, SRM, and all orders which use the (f) sequence. U)yis set to "1" for all store type instructions which use the Qy sequence as well as for CSE and CAE. TC is set to ,: 1" for store clear type instructions and also CSE and CAE. X is set to "l" for all orders whose least significant octal digit is 7. A is set to "l" for all logical type orders. 6 and 6 are set to control the choice of MsS and MsA set- tings in the Ck) and \Bj sequences. They are also used to control conditional paths in the (i), @, (m), (p), (s), and (v) sequences. To gain a better understanding of the decode logic, we consider the signal flow on G-I (D-1276). In the inactive state, the Gl Eccles -Jordan shown on D-1276 is set to "0" (i.e., its "l" side has a "0" or negative voltage output). Consequently, the A has a "1" output which represents an inactive request. Note also that the ODIR output is "0". The last control step in the previous order must be Kl, . K2, D5, D8, E3, or M8 as indicated by the inputs to the restoring AND in the cen- ter of the drawing. Each of these final steps request some of the link mechanisms whose replies are inputs to the Gl A . However, all of these final steps set OV to "1" or bypass it to cause OVr to go from "l" to "0" . As shown on D-1291, -166- these requests are effective only when ODIR = 0. When OVr and the output of the restoring AND on D-I276 both go to "0", the Gl Eccles-Jordan is set to "1", but the output of the associated A is held to "l". ODIR now goes to "l", indicating that "the preceding order is done and all indicators are ready for inspection by AC." If a JOV order is present in AC, #5-gOV is allowed to go to "0" (shown on D-1291) and set OV to "0". OVr goes from "0" to "l" when #5-gOV goes back to "1". If a JOV order is not present in AC, #5-gOV remains at "l" and ODIR = 1 causes OVr to go from "0" to "l", even though the request from the final control step of the previous order is still active (i.e., still "0"). At the same time, the fact that the Gl Eccles-Jordan is now set to "1" permits the Eccles-Jordan associated with the active control step preceding Gl to be set to "0" . This does not actually occur until all the requested link mechanism other than OV have responded with "0" replies and dec = [(DCRFL)d][(lNFL)d ^ dcrs] = 1. The latter signal is "1" when DCRFL is set to "1" and either INFL or DCRS is set to "1", indicating that the next order is in DCR and its operand - if needed - is in Fl (IN). When the Eccles-Jordan in the control step preceding Gl is set to "0", the output of its associated A goes from "0" to "1". This causes the replies to go from "0" to "1", indicating that the activated link mechanisms are either off (in the case of gates) or latched in the state requested. When the OVr also goes to "1" as described above, the output of the Gl A goes from "l" to "0", initiating the active phase of decode. The requests made by this output depend on the order in DCR as summarized in Table II. The "0" output of the Gl A causes the contents of Fl (IN) to be gated into M and EM, regardless of whether the order being decoded will use this operand. It also clears Q, and Q, , to "0", and sets CR and ZA t,o "0" (i.e., requests CR and ZA). It also allows the outputs of the DCR register to be decoded as shown y on G-II (D-1278). Before the output of the Gl A goes to "0", all points in both -167- the instruction decoder (D-1278) and status memory decoder (encloder) are held to "1". The logic of these decoders does not react to the new outputs of DCR until Gl-b goes to "0". The G-II ( D-1278) logic selects the entry control step of the sequence which follows decode while the G-III (D-1277) logic sets the status memory elements to their appropriate state. The negative logic for G-II is given below. The numbers in brackets indicate the range of octal digit pairs for which the associated signal is "0". The f . and f . signals represent the true and complement outputs of the i — F-element in the DCR. First Level G10 s (61 - b) v f v f s [00-17] GX - a = GX - b = G12 = (61 - b) v f v f v f = [20-27] J- & GY = G13 = (Gl -tjv^vfgvf a [30-37] GZ G17 = (Gl ■ b) v f v f v f a [kO-kl] Second Level Gl - Bl = GB - a = GB - b = G10 v f = [00-07] GW = Gil = G10 v f = [10-17] Gl - PI = GP = G21 = G13 v f ^ = [30-33] GlU = G13 v f^ = [3U-37] Gl6 = G17 v f ^ v f v f 6 = [1+2] G18 = G17 v fg = [kl, 1*3, 1*5, 1*7] -I68- Third Level Gl - Al = GA = Gil v f r - [10, 12, Ik, 16] Gl - El = GE = Gil v f ' = [11, 13, 15, 17] Gl - S2 = G2S = GlU s/ f = [36, 37] Gl - SI = G15 = GlU v f = [3^ 35] Gl - Rl = (G12)(Gl6) = [20-27, h2] Gl - LI = G19 = Gl8 v f . v f = [Ul] Gl - S3 - G20 = Gl8 v/ f ^ v f = [U3] Gl - Fl = GF = Gl8 v f , = [U5-U7] The negative logic for G-III is given below. The numbers in brackets have the same meaning as above. An "x" indicates that any octal digit applies. Note that some of the variables in this logic are generated above, e. g., GY. First Level G30 = G31 = G32 - G33 = (Gl - f ) v f k = [x0-x3] G3^ = (Gl -a)vf vf ga [x3, x7] G35 = (Gl -f) vf/= [x0, x2, xh, x6] G36 = (Gl - a) v/ f k - f 6 = [x5, x7] G3T = (Gl - f ) v f s/ f 6 = [xO, xk] G38 = (Gl - f ) s, f k v f = [x2, x3] G39 = (Gl - a) ~ f^ v ? 5 ~ f 6 = [x6] GUO = Chi = (Gl - a) v fY = [x4-x7] -169- Second Level Third Level Gl - C = Gi+2 = GE v f = [11, 15] GU3 = GE v f = [13, 17] Gl - X = Gl+U = GS^ ^ f ^ = [xT] GU5 = (GB - a) v/ G36 = [05, 07] G^6 = G¥v Gl+1 = [1^-17] GU7 - (GX - a) v G36 = [25, 27] GU8 = (GX - b) v GW - [10-27] GU9 = Gi+O vf a [xU, x5 ] G - 50 = GY v- f h = [3^-37] G - 51 = G36 v G39 - [x5, x6, x7] G - 52 = (GB - b) v GZ - [00-07, UO-^7] Gl - DL = G53 = GUU v/ GZ = [k-J] G$k = (GB-b) v G35 ^ GiU = [OU, 06] G55 = (GB - a) ^ G31 = [00-03] G56 = (GX - b) v G^l = [2U-27] G57 = (GY)(G52) = [00-07, 30-37, ^0-^7] G58 = (GX - a) v G39 = [26] G59 = G33 ^ Gi+8 = [10-13, 20-23] G60 = (GX - b) v G37 = [20, 2U] -170- G6l = G39 v G^9 = [xU, x5, x6] G62 = G31 v f « [xO, xl] G63 = G31 vf g = [xl, x3] G6U = G50 v G51 = [35-37] G65 = G51 v G52 = [05, 07, U5-V7] G66 = GF v GP v G2S = [30-33, 36, 37, ^5, ^7] G67 = GE v GliO = [15, 17] G68 = GE v/ G33 = [11, 13] Fourth Level Gl - C = (GA)(G^3)(G66) = [10, 12-lU, 16, 17, 30-33, 36, 37, ^5, ^7] Gl - DL = (GB-b)(GY)(G32)(GU8)(G6l) = [00-1+6] Gl - J - (GP)(GZ)(G5 1 +) = [ok, 06, 30-33, ko-k-j] Gl - J = (GX - a)(GW)(G^5)(G50)(G55) = [00-03, 05, 07, 10-27, 3^-37] Gl - N = (G^6)(G56) = [1^-17, 2U-27] Gl - N = (G57)(G59) = [00-13, 20-23, 30-U7] Gl - TC = (G^6)(G58) = [lU-17, 26] Gl - TC = (GU7)(G57)(G59)(G6o) = [OO-13, 20-25, 27-^7] Gl - X = (G32)(G6l) = [xO-x6] Gl - 9 1 = (G38)(G5l) = [x2, x3, x5-x7] Gl - ? 1 = (G37)(G62) = [xO, xl, xk] Gl - 6 2 = (G3^)(G63) = [xl, x3, x7] ■171- Gl - 9 = (G35)(G6l) = [xO, x2, xU-x6] Gl - A = (G6U)(G65) = [05-07, 35-37, ^5-^7] Gl - A = (G32)(G37)(GU8) = [oo-oU, 10-3U, U0-M1] Gl - gEA = (GW)(G66) = [10-17, 30-33, 36, 37, h5, kj] Gl - OsEA = (GF)(G67) = [15, 17, h5, hi] Gl - EsEA = (GA)(GP)(G2S)(G68) = [10-lU, l6, 30-33, 3^, 37] Gl - OsD = (GP)(G2S) = [30-33, 36, 371 Gl - EMsD = (GF)(G^3) = [13, 17, U5, hi] Gl - EMsD - (GA)(GU2) = [10-12, lU-l6] For example, if a clear add type order is in DCR, then the Gl - Bl output of the G-II logic goes from "l" to "0", causing the Bl Eccles-Jordan shown on D-1270 to set to "l" but holds the output of the Gl A to "l" . The resulting "0" output on the "0" side of the Gl Eccles-Jordan is 0R s d with Gl - Bl to yield a "0" which is returned to the AND in Gl shown at the bottom left corner of G-I (D-1276). The output of this AND is OR'd with the output of the larger OR which collects the replies from the status memory elements that are set by the outputs of the G-III logic as well as FlgMEMr, (DCRFL)d, and (iNFL)d. A discussion of the logic associated with the latter two signals is postponed for the present. Note that gEA, sEA, sD, and C are not requested for {Bj type orders, so their replies remain at "l". It is clear that when all of the activated replies are "0", the top input to the AjA will go to "0", causing the AND output to set the x- Gl Eccles-Jordan back to "0". This in turn changes the output of the Gl A from "0" to "1" which initiates the relaxation phase of the decode control step. If DCR contained an illegal order (kO, kh, or h6) , the G-II logic would not set the entry Eccles-Jordan of any control sequence. As a result, both -172- inputs to the A|A shown on G-I (D-1276) would remain at "1" so that the AND out- put would remain at "0". This "0" OR'd with the "0" request from the Gl A would cause the "decode error" indicator to light. So far, nothing has been said about the output of the "latch" AND that appears at the right edge of G-I (D-1276). Its outputs, G2 - a, b, d, and k, go to "0" after the Gl A output goes to "0" during the active phase of decode. G2 - a, G2 - b, and G2 - d "unlatch" the OR's shown at the bottom of G-I. The second inputs to these OR's are the replies from those link mechanisms which are requested by other control steps in DC. The outputs of these OR's are denoted by primes and feed only the logic shown on G-I. Since FlgMEM, N, A, and 9 are requested only during decode, their replies feed the logic on G-I direct- ly. The significance of this will soon be apparent. The "0" G2 - d output is also distributed to the entry A of all con- trol sequence which may follow Gl. For example, G2 - f is an input to the Bl A shown on D-1270. G2 - f = holds the output of the A at "1" even after the Gl - Bl request goes back to "1" . The "0" G2 - k output sets DCRFL to "0" which returns the "dec" sig- nal to "0" and causes ( DCRFL )d = 0. If dcrs = 0, it also sets INFL to "0" which in turn causes (iWFL)d to change from "1" to "0". If dcrs = 1, (iNFL)d is already "0". The ( DCRFL )d signal remains at "1" during this time and con- tinues to inhibit AC from reloading DCR and setting DCRFL back to "1". The same is true of (iNFL)d if INFL is set to "0" by G2 - k. £ After the Gl Eccles -Jordan is set to "0" and the A output changes from "0" to "1", all nodes and outputs of the G-II and G-III logic must return to "1". In fact, R. R. Shively designed this logic such that its outputs are "1" only after internal nodes have returned to "1". This logic is said to be •173- "flushed" to "l" when the replies from the control step entries, gEA, sEA, sD, C, and all other status memory elements have returned to "1", For any given order, only one control step entry reply (e.g.., Bl - Gl) goes to "0" so only one must go back to "l". To check this RP - 1 and RP - 2 on G-I feed the "latch"' AND, RP - 3 and RP - k also feed the "latch" AND to insure that a "0" is not trapped between the series OR's which gather replies. The need for such a check when reply OR's are used in series was pointed out by R, E, Swartwout. When all replies have returned to "l", the output of the "latch" AND changes from ;, 0" to "1". The latching effect is now clear, The primed reply signals on G-I cannot change from "l" to "0" even though the unprimed replies will change in response to requests from control steps which follow Gl. The fact that FlgMEM, N, A; and 9 are only requested by Gl means that the "latch" AND output remains at 1 until the Gl A output goes to "0" during the next decode step. When G2 - k goes to "1", (DCRFL)d and possibly (iNFL)d go from "l" to "0". This allows AC to load DCR with a new order and set DCRFL back to "1" . The same applies to Fl (IN) and INFL when necessary. When G2 - d goes to "l", the corresponding cable inputs to the entry A s also go to "l" , For example, in the (BJ sequence (D-1270), the G2 - f sig- nal goes to "l" If the Bl Eccles-Jordan was set to "l" by Gl - Bl during the active phase of decode, the output of the Bl A changes from "1" to "0", initiat- ing the first step (Bl) of the (B) sequence. The decode entry to other se- quences follows a similar pattern 5.2 The Clear Add Sequence vB) Besides the decode entry to Bl, there are also entries from Al and S10 as shown on D-1270. The entry from Al corresponds to the case where the ad- dend (subtrahend) is so much larger than the augend (minuend) in AQ, that a -17U- CAD (CSB) yields the sum (difference). The entry from S10 has CAD initial con- ditions and represents the second half of an XCH order. Let m and em denote the contents of M and EM as usual. Remember that m = m amd enu = env following Gl since the sign bits of the fraction and exponent are duplicated as they are placed in M and EM via FlgMEM. A is set to "0" for CSB, CST, CAD, CAT, and NOT. These orders place -m, -2m, m, 2m, and m in A and transfer em to E. Since m represents the bitwise complement of -kk — -10+ m, -m = m + 2 and -2m = 2m + 2 . For AND, LOR, and BLS, A is set to "l". These orders form a • m, a ^ m, and 2a with the sign bit duplicated. The result is placed in A while the contents of E remain unchanged. The Qi) sequence sets Z to "0" (i.e., sets Z) and sets KgA = 1 in all cases. The output of the A-adder, a, represents the assimilated value of the accumulator, a, at the time of exit to Kl. Because of the CSB, CST, and CAT orders, cc may be overflowed modulo 2 (a < -1 or a > l) when control is trans- ferred from B3 to Kl. This condition is detected and corrected by the (k) se- quence as discussed in section 5.3. To acquaint the reader with the logic of DC, we follow the signal flow through the (b) sequence as shown on D-1270. Assume that the output of the Bl A has just changed from "l" to "0" following an entry from Gl, Al, or S10. This "0" request from Bl sets the sSR selector mechanism to OAsSR and causes gS = gR = 1 in the MAU. KgA = 1 at the time of entry to Gl, so it is still true at Bl. The same is true for the entry from Al (D-1268). The MsA selector mechanism is set to KgA in SI (D-I283) and never reset during (sf), so KgA = 1 when Bl is entered from S10. Consequently, GC represents the assimilated value of A which is transferred to R when gR = 1. At the same time, zero is placed in S when gS = 1. Z is set to "0" since the quantity which is eventually placed in AQ, is generally not zero. -175- If a NOT order is being executed, j = \ = so that an MsS, CS re- quest is sent to the MsS selector mechanism. This causes m to he added to the th contents of S without a complement carry in the kk — position. If any other Bj type order is being executed, j • X. = so that the 0MsS decoder shown on D-1506 is enabled. The settings of 6 and 6 determine the state requested. Note that AND and LOR request MsS while BLS requests 2MsS. Since S con- tains zero in all cases, the state of the MsS mechanism and the contents of M determine cr which is the output of the S-adder. In the EAU, the "0" Bl request sets the sEA mechanism to the OsEA state and opens gEA, thereby causing EA to be cleared to 0. C is set to "0" and the sD mechanism is set to the EMsD state,, This causes the contents of EM to appear as the output, d, of the exponent adder. While all of this is taking place, Bl - E2 is "0" and thus sets the B2 Eccles-Jordan to "l", but at the same time prevents the output of the asso- y ciated A from going to "0". When the false side (i.e., "0" side) of the B2 Eccles-Jordan goes to "0", it is set. This is checked by OR'ing it with the "0"-going replies from the activated link mechanisms. When all are "0", the Bl Eccles-Jordan is returned to "0" . This is checked by the presence of a "0" on the true output of the Bl Eccles-Jordan. This "0" causes the link mechanism replies to change from "0" to "l" which completes the relaxation phase of Bl and initiates the active phase of B2, All entries to [BJ for which X = bypass B2 and make the requests associated with B3, but do not set "the B3 Eccles-Jordan. This is accomplished — x via a restoring AND following the B3 A . The requests made by this AND are con- sidered later. A is set to "1" for the AND, LOR, and BLS orders, so the B2 step is done. The B2 - RgM request goes from "1" to "0", thus enabling the conditional ■176- logic shown on RgM (D-1191). For the AND order, J v \ = and j v ' ? v \ = 0, so R • MgM is done while R ^ MgM is bypassed to obtain a "0" reply. Since the assimilated contents of A were placed in R during Bl, R • MgM produces a bitwise AND of the assimilated contents of A with the contents of M. The result replaces the contents M as discussed in section 3.1.2.2. For the LOR order, ' \ ^ 3 '9=0 and j v \ = so that R -v MgM is done and R • MgM is bypassed. This places the bitwise OR of the assimilated contents of A and M in M. For the BLS order, j v \ = and \ ^ j = so RgM is done as discussed in section 3.1.2.2. Consequently, the assimilated contents of A -- now held in R -- are transferred to M. For all three orders, a must change to match the new contents of M. Meanwhile, B2-B3 sets the B3 Eccles -Jordan to "l" but prevents the — * output of the corresponding A from going to "0" . When the R v MgM and R • MgM replies go to "0", the nonrestoring AND output follows and sets the B2 Eccles- Jordan to "0". This in turn causes the output of the B2 A to go from "0" to "1", thereby initiating the relaxation phase of B2. When the R • MgM and R ^ MgM replies change from "0" to "l", the B3 A output goes from "1" to "0", initiating the active phase of B3. — * Note that the output of the B3 A feeds a restoring AND which was men- tioned above in regard to bypassing B2. When the output of this AND changes from "1" to "0", either the Eccles-Jordan in B3 is set to "0" and the one in B2 is still set to "l", or the Eccles-Jordan in B3 is set to "l" and the one in B2 is set to "0". In either case, the "0" request from the AND in B3 sets the sAQ mechanism to SOsAQ and opens gA so that a, which equals the contents of M modi- fied by the state of the MsS selector mechanism, is transferred straight into A. The MsA mechanism is set to KgA. After the carry generator and A-adder have responded, Ot represents the assimilated value of as placed in A. At this -177- point, the stored carries in A are all "0" except for a possible carry in A, when CSB and CST are executed. For the so-called arithmetic orders (CSB, CST, CAD, CAT, and NOT) X = so the B3 request opens gQ and DgE. This clears Q to zero and places the exponent of the incoming operand in E (i.e., the quantity that was placed in EM during Gl is now transferred to E). For the logical orders (AND, LOR, and BLS), \ = 1 so gQ and DgE are bypassed. This means that the contents of Q and E remain as they were during Gl. Except for BLS, B'j, also requests entry to Kl. The B3-K1 signal is "0" when B3 is active and \Q - 0. This signal sets the Kl Eccles-Jordan to "1" and causes Kl - f to go to "0" as soon as all the link mechanisms requested by B3 respond with "0" replies. The Kl logic is shown on D-1279. If BLS is the order being executed, \ v- Q = so the B3-K1 signal remains at "l" and the Bk Eccles-Jordan is set to "1" by the "0" B3-B^ signal. The BU-B3 signal goes to "0" as soon as all the link mechanisms requested by B3 respond with "0" replies. As soon as Kl - f or BU-B3 go to "0", the Eccles-Jordans in B2 and B3 are set to "0" . One of these is already set to "0" depending on whether or not the B3 Eccles-Jordan was set to "1" by a request from B2. In either case, the result is the same. The output of the AND in B3 changes from "0" to "l". When the link mechanisms respond with "1" replies, either Kl or Bh becomes active. Assume for the present that BLS is being executed so B^+ becomes ac- tive. Since the assimilated contents of A during Gl are now shifted left by one bit position, it is possible for a £ a n . There are no stored carries in A so a = a, and a = a . If a / a, the Kl step will shift the contents of AQ one base k position to the right and yield a binary right shift of the orig- — £ inal contents of A. To prevent this, the "0" request from the Bk A opens a gA i. causes a„gA = in this case) which copies a„ into A . As a result, a = QL at the time of entry to Kl from Bk. Meanwhile, the BU-K1 signal sets -178- the Kl Eccles -Jordan (shown on D-1279) to "l". There is no reply associated with a Q gA_ 1 so the "0" output of the Kl Eccles -Jordan is sufficient to cause Kl - d to change from "l" to "0". This signal sets the Bk Eccles-Jordan "back to "0", which causes Bk - a Q gA and BU-K1 to return to "1". This initiates the active phase of Kl as described in the next section. 5.3 The Correct Overflow and Detect Zero Sequence \K) Except for SBE, ADE, CSE, CAE, and premature exits from MPY, DIV, NDV, and VTD orders, all orders pass through one or more control steps of the (k) sequence. In all cases, KgA = 1 at the time of entry to Kl, so O. represents the assimilated value of A. Kl determines whether AQ is overflowed modulo 2 or zero. These conditions cannot both be true. If examination of the most sig- nificant bits of Oi and the state of Z shows that neither of these conditions are true, Kl sends a bypass request to the OV status memory element and exits to Gl via Kl-Gl. If QL is overflowed, Kl and K2 right shift AQ one base k position and check for exponent overflow before exiting to Gl or K3. If a is not overflowed, Z is set to "0", and the most significant bits of a are zero, Kl and K2 right shift AQ into SR and check for zero but do not return this assimilated repre- sentation to AQ. In K2, OV is bypassed and Z is set to "1" or bypassed, depend- ing on whether SR is zero or not. Control then passes to Gl or K3 depending on whether TC is set to "0" or "1". When SSC or ASC are executed, the (k) sequence is used twice as shown in Table I. On the first pass through (k) following (A), TC is set to "1" so K3 may be entered from either Kl or K2. K3 acts as an abbreviated decode step in that it sets CR to "0", clears Q, and Q. , to "0", and opens the gate to EXR in the process of activating Rl (D-1282). As a final example of signal flow through control logic, we consider the (k) sequence in detail. -179- The Eccles-Jordan in Kl may be set to "1" by an entry request from any one of eleven different control steps as shown on D-1279* Assume the replies associated with the entry request have gone to "0" and are now returning to y "1" . As soon as all reply inputs to the Kl A are "l", its output changes from "l" to "0", initiating the active phase of the Kl control step. If (ctov) x- z(oaiz) = 0, the contents of AQ, are neither overflowed mod- ulo 2 nor zero. The significance of Oov and Ctoz is discussed in section 3.1.9. Their values are valid at this point, since KgA = 1, If tc - 0, the Kl-Gl signal requests entry to Gl and bypasses 0V to obtain a "0" OVr as discussed in section 5.1. If the conditions for starting a new decode step are satisfied (i.e., if dec = l), Gl-Kl changes from "1" to "0" which sets the Kl Eccles-Jordan back to "0", beginning the relaxation phase of the Kl step. If, on the other hand, tc = 1, an entry request is sent to K3. The K2-K3 signal goes from "l" to ''0" and sets the K3 Eccles Jordan to "l" which in turn causes K2-K1 to set the Kl Eccles Jordan back to "0". Therefore, when the output of the Kl A changes from "0" to "l" in the relaxation mode, the Gl or K3 control step becomes active depending on the setting of TC. If (cfov)(z v (anz)) = 0, the contents of AQ are either overflowed or Z is set to "0 ,! and a may b< zero. If Cfov = a © a = 1, a -- and hence AQ, -- is overflowed modulo 2, If Cftiz = a v a, v a ^ a ^ a. = 0, a may be zero. Since z = 0, it is necessary to check every bit of C£ and Q to determine if all are zero. This is done by examining the outputs of the S and R zero detectors following a right shift into SR. When the output of the AND-0R defined by Kl v (aov)(z) ^ (aov)(anz) is "0", it sets the sSR mechanism to the l/k AQsSR state and opens gS. It also opens gR if DL is set to "l", indicating a double length operation. If DL is set to "0", gR is bypassed to obtain gRr =0. In the latter case, a ■180- and cci i are lost. DL is always set to "l" except when Kl is entered from D20, in which case dl = to prevent losing the remainder which is stored in R. In case 3 addition, CR is set to "1" during a particular pass through A10 in the (a) sequence, but it is not set to "0" prior to exit from (aV Thus CR is always set to "0" during Kl to insure that the true sign bit of the un- assimilated number in AQ is copied into S , and S when \ = as discussed in section 3.1.2.8. If \ = 1, setting CR to "0" insures that "0" is inserted in S , S , and S when gS = 1. This is in keeping with the fact that oc is con- sidered the left-most bit at the output of the A-adder when "logical" orders are executed. In Kl, d is transferred to S when gS = 1. Since KgA = 1, all of the a bits are "0". The "0" request from Kl also sets the MsS mechanism to the OMsS state. This causes the new contents of S to appear as a at the output of the S-adder. Additional activity occurs in the EAU during Kl. The "0" request sets EsEA and opens gEA. The exponent, e, associated with AQ is thus transferred from E to EA. Since this request also sets OsD, the output of the exponent adder is therefore determined by the contents of EA and the setting of C. If Qiov = 1, C is set to "l", thereby adding a unit to the exponent in EA. This com- pensates arithmetically for the right shift of AQ, to correct the fractional overflow condition. The output, d, of the exponent adder (D-I503) is e + 1 which may exceed 127. If so, dov = 1 at the output of the exponent decoder (D-I50U) as discussed in section 3.2.4. Otherwise dov = 0. If Ctov = 0, C is set to "0" since AQ is left as it is, except for a transfer into SR to check for zero. In this case, d = ea but is not used since the non-overflowed branch of K2 does not open DgE. While the above requests are made, Kl-K2a. sets the K2 Eccles -Jordan to "l" but prevents the output of the associated A from going to "0" . When -I8I- the replies from the activated link mechanism change from "1" to "0", K2-K1 goes from "1" to "0" and sets the Kl Eccles -Jordan to "0". At the completion of the relaxation phase, all replies return to "l", including the Kl-K2a re- quest. The output of the K2 A then goes from "l" to "0". The K2 step has a conditional branch in its control path. If c = 1, Oov was true in Kl, so SR is transferred straight into AQ, d is gated into E, and 0V is set to "l" if dov = 1. If c = 0, Qtov was not true in Kl, so SR is checked for zero and 0V is "bypassed to cause OVr = when entering Gl. First consider the case where c = 1. On D-1279 c = 0, so K2 requests gA and sets SRsAQ which transfers the contents of S straight into A since OMsS is true. If dl = 1, gQ is also opened so that R is transferred straight into Q. In the case of divide orders dl - 0, so gQ is bypassed leaving Q un- changed and in fact zero. This K2 request also opens DgE and thus transfers the new accumulator exponent, e + 1, into E. If z = and dov = 1 as dis- cussed above, 0V is set to "l". However, if z = 1 but dov = 1, 0V is not set to "1" but is bypassed. This is to prevent setting 0V to "l" when Z is already set to "l". (This rule is violated when the accumulator contains zero and a VID order is executed. The exit to Gl via D5 sets 0V to "l".) If dov = 0, 0V is always bypassed. At the same time, the Eccles-Jordan in Gl or K3 is set to "l" depending on whether TC is set to "0" or "l". When gAr ^ gQr ^ DgEr v sAQr v OVr v (Gl-K2a) [ (K2) v (tc) ^ K3-K2] = 0, the K2 Eccles Jordan is set to "0". After all the requests and replies have returned to "1", the active phase of Gl or K3 is initiated. Now consider the case where K2 is active and c = 0. If the outputs of both the S and R zero detectors are "1", SZ v RZ = 0, so Z is set to "1". Otherwise, Z is bypassed. The S and R zero detectors appear on ZDR (D-I505). 0V is always bypassed in this case. The Eccles-Jordan in Gl or K3 is set to "1" depending on whether TC is set to "0" or "1". -I82- When Zr v (Gl-K2b) [(K2) v (tc) v (K3-K2)] = 0, the K2 Eccles -Jordan is set to "0" . As before, when all K2 requests and their corresponding re- plies return to "1", the active phase of either Gl or K3 is initiated. Since the Gl control step is described in section 5.1* we consider K3. This control step is active only during the first pass through (k) in the execution of an SSC or ASC order. Its primary purpose is to open the OR gate to EXR and set the Rl Eccles- Jordan to "l" as shown on D-1282. EXR is set to "1" if (z v dl)(na)(za ^ dl)(n * 9 ^ 9 v QZ)(J ^ QZ) = 0. Since K3 may be activated from Kl, CR may still be set to "1". As discussed in section 3.1.12, it is necessary to set CR to "0" to insure that Oi and a represent -3 the true sign bit of A in the event of a right shift into S with KgA = 1. It so happens that this condition never arises in passing through \RJ and \SJ in completing and SSC or ASC order. It may happen during the second pass through [KJ on the way to Gl, but if so, CR is set to "0" during Kl or Gl. As an afterthought, therefore, the request to set CR to "0" in K3 is not necessary. The 0gQ,« _Q. . request is necessary to make SSC and ASC consistent with the order pairs SUB, STC and ADD, STC. When the Rl Eccles-Jordan is set to "1", EXRr = 0, and CRr = 0, R1-K3 changes from "1" to "0" and sets the K3 Eccles-Jordan back to "0". When the K3 requests and replies return to "1", the Rl control step is ac- tivated. Its requests are discussed in section 5.10. 5.k The Load Q Sequence (l) This sequence is used only by the LAL order. Its function is to load Q (i.e., the least significant half of the accumulator) with a fraction- al operand but leave A unchanged. The accumulator exponent in E is also left unchanged. Since Z is set to "0" even though A may contain zero, control -I83- passes through (k) on the way to Gl. If A is zero and a zero fraction was placed in Q by (l\ then K2 detects this and sets Z to "1". Thus, when Gl is activated to decode the next instruction, Z is set to "1" if AQ contains zero in any form. If the exponent in E is less than -128- at the beginning of an LAL order and the operand placed in Q is non-zero, then K2 will not set Z to "1" even though the entire accumulator is considered zero under other cir- cumstances. The description of the (l) sequence and each of the remaining se- quences is abbreviated. The effect of each control step on the AU and LM is discussed, but a description of the signal flow through the sequence logic is omitted. The Gl entry to LI is shown on D-1280. Since KgA = 1 is an ini- tial condition for Gl and since the state of the MsA mechanism is not changed during Gl, a represents the assimilated contents of A at the time LI becomes active. During LI, CC is placed in R and S is cleared to zero. MsS is re- quested so that the fractional operand in M appears as (i.e., output of the S-adder) by the time L2 becomes active, Z is set to "0" to cover the case where Z is currently set to "1" but the operand in M is non-zero. As mentioned above, this does not cover the case where Z is true because of exponent underflow at the time of entry to LI. During L2, ha is placed in A. This means the sign bits of the fractional operand in M are lost. Furthermore, r and r are placed in Ai _ and A, , . These bits, incidentally, are equal to the sign bit of oc as it appeared at the output of the A-adder during LI. In L3, the contents of R are transferred to M via RgM as dis- cussed in section 3.1.2.2. During this step, the zero stored carry bits in A flush through the carry generator and A-adder logic. After this -18U- occurs, the new contents of A (i.e., the fraction that is to be placed in Q) appear as a. In LU, a is placed in R. Remember that oc -> R ... a, , -* R, , . Note also that a, = a., represents the true sign bit of the accumulator as it appeared during LI and is therefore noise as far as the fractional oper- and from M is concerned. During L3 and iA, the new contents of M -- namely the old assimilated contents of A -- appear as o since S contains zero and MsS is still true. During L5, SRsAQ is requested as the new state for sAQ and both gA and gQ are opened. As a result, a is placed in A and the contents of R are placed in Q. In this transfer a. -> A. and r. -*■ Q. . 1111 At the completion of L5, the original -- possibly unassimilated -- contents of A are returned to A in assimilated form, and the nonsign bits of the fractional operand that was placed in M during Gl are in Q , Q ... Q> , Q, and Q, , hold the same bit as A and A at this point. However, Q, and Q, , are cleared to zero by OgQ^o^kk c ^- ur i n S the Gl following (KJ. Z is set to "1" during K2 if AQ contains zero. 5.5 The Add Sequence (A The (a) sequence performs floating point addition (subtraction). The number in AQ which may be unassimilated during Gl, and its exponent in E correspond to the augend (minuend) while the fraction in M and its exponent in EM correspond to the addend (subtrahend). Before the addition (subtrac- tion) is performed, the augend (minuend) is shifted in AQ so that its expo- nent agrees with the exponent of the addend (subtrahend). In case the addend (subtrahend) is much smaller than the augend (minuend), the fraction in M is placed in A and shifted right until the exponents agree. -I85- Let the exponent of the augend (minuend) be denoted by ea. Even though it is in E at the beginning of Gl, it is transferred to EA during the decode step. Since the exponent of the addend (subtrahend) is placed in EM during decode, let it be denoted by em. EMsD is the state of the sD mechanism and C is set to "0" at the time (X) is entered from either Gl or V4. There- fore, during Al the output of the exponent adder is d=ea - em- 1. The five cases of floating addition (subtraction) are defined in terms of d at this point. Note that d is always a unit less than the true difference between the exponents of the augend (minuend) and addend (subtrahend). Case 1: fa #1 = (d < -46) v dz = 1 (i.e., condition is true) Case 2: fa #2 = (-45 < d < -l) = 1 Case 3: fa #3 = (0 < d < 21 ) = 1 Case 4: fa #4 = (22 < d < 43) = 1 Case 5: f a #5 = (44 < d) v dov = 1 It is convenient to decode cases 2 and 3 together. Case 2, 3: fa #2, 3 = (-45 < d < 21 ) = 1 The signals fa #1, fa #2, 3, fa #4, fa #5, dov and dz are outputs of the exponent decoder as shown on D-1504 and discussed in section 3.2.4. Remember that if dz - 1, then d < - 128, If dov = 1, then d > 127. If fa #1 = 1, the actual difference in exponents, d = d + 1, is : -45. This means the augend (minuend) in AQ must be shifted right at least 45 base 4 places before addition (subtraction) occurs. Since there are only 45 nonsign base 4 positions in AQ, the fraction in M is simply clear added (subtracted) via the (b) sequence. Consequently, if the original ac- cumulator was negative, the sum (difference) is too large by at most 2 ' . If fa #2, 3=1 and d < 0, the actual exponent difference is in the range: -44 < d CO. Case 2 requires that the contents of AQ be right -186- shifted from to hk base k positions, before addition (subtraction) occurs. The sum (difference) has the exponent of the addend (subtrahend), i.e., the exponent in EM. If fa #2, 3=1 and d > 0, the actual exponent difference is in the range: 1 < d < 22. Case 3 therefore requires left shifting the contents of AQ 1 to 22 base h positions before addition (subtraction) occurs. Since the sum (difference) has the exponent of the augend (minuend), i.e., the ex- ponent in E, the partial result must be right shifted the same number of base h positions with the appropriate propagation of carries or borrows. Cir- cular left and right shift paths at the high end of A and S and the low end of Q and R are used to accomplish this c As discussed in sections 3.1.2.6, 3.1o2.8, and 3.1.12, these paths are opened by setting CL and CR to "l". If d = 22, the contents of AQ, are circularly left shifted until the two least significant nonzero bits that were originally in Q, and Q, are placed in A, and A« . . The a and a bits that appeared at the output of the A-adder during Gl with KgA = 1 are in Q. and Q at the time of addi- tion (subtraction). As the result is circularly right shifted, the Q and R half-subtractors (section 3.1.12) propagate a borrow to the left if neces- sary. The rate at which a carry is propagated to the left is exactly equal to the rate at which the result is shifted right. Thus , as long as a car- ry is being propagated to the more significant bits of the result, A and S both contain a "1". If fa jfh = 1, the actual exponent difference is in the range: 23 < d < kh. Consequently, the contents of AQ, would have to be left shift- ed from 23 to hk base k positions. This is generally not possible using the circular shift techniques described above. Instead, the contents of A and Q are interchanged, and A is isolated. The new contents of A and the con- tents of M are then interchanged with -M being placed in A if a subtract -I87- order is being executed. This is done by steps A2 through A7 in (1\) . The addend (subtrahend) that is now in A is right shifted d - 23 = d - 22 base k positions -- leaving Q unchanged -- before addition (subtraction) occurs. The result represents the least significant half of the sum (difference) with a possible carry or borrow to be propagated into the most significant half of the addend (minuend) which is presently in Q. After A and Q, are transferred to R and S respectively, the carry-borrow logic described in -kk -kk section 3.1.13 determines whether +2 or -2 should be added to the contents of S (i.e., the most significant half of the addend (minuend)). The final sum (difference) is gated straight into AQ and assigned the ex- ponent of the augend (minuend). This final interchange and carry -borrow correction occurs in steps All through AlU of the (l£) sequence as shown on D-1269. t If fa #5 = 1, "the actual exponent difference is: d > k^ . This means the quantity in M should be added (subtracted) to those bits of AQ 1 lying to the right of Q, . If d = U5, the bits in M and M should be added (subtracted) to the bits in Q, and Qi^. Since these bits are always set to "0" during Gl, the Cm sequence is simply bypassed in this case and the augend (minuend) with its exponent is accepted as the sum (difference) even though Z may be set to "1". The descriptions given above apply to SUB, ADD, SSC, and ASC. It should be clear that if the addend (subtrahend) in M is zero (i.e., em = -6k) the (a) sequence is bypassed and the augend (minuend) is always taken as the sum (difference). In the step-by-step description given be- 1 low, note that when d is odd (d even) the addition (subtraction) is to A while if d is even, it is to S. In Al, the negative conditional logic shown below is used to de- termine the particular case of addition. This logic and the first eight -188- control steps of A appear on D-1268. FA #1 = (em = -61+) v 7(f a #l) = Al-Bl FA #2, 3 = (em = -6k) v z v (fa #2,3) => A1-A8 FA #U = (em = -6k) ^ z s ' (fa #U) FA #5 = (em = -6U)[z v f a #5 ] = A3-K1 If FA #1 = o, the Eccles-Jordan in Bl is set to "1" since a CSB or CAD is required either because Z is set to "1" or fa #1 = 1. After the Al Eccles-Jordan is set to "0" by Bl-Al, the Bl control step becomes ac- tive, Note that nothing is done to the LM or AU during this option of the Al step. It is designated as a "null" step on the DC Flow Chart. This step is necessary because Bl clears EA to zero, which may cause the fa #1 out- put of the decoder to change from "1" to "0" and thus destroy the entry re- quest. In other words, if the Bl requests were made in series with entry request, FA #1 = 0, without setting the Bl Eccles-Jordan, FA #1 might change from "0" to "1" before the Bl step is completed and thus cause an error. By setting the Bl Eccles-Jordan to "1" first, FA #1 may change from "0" to "1" during the active phase of Bl and not affect the result. The operation of the (b) sequence is discussed in section 5.2. If FA #2,3 = 0, neither the accumulator nor the operand are zero, but fa #2,3 = 1. The A8 Eccles-Jordan is not affected, but the A9 Eccles- Jordan is set to "1" and the MsA mechanism is set according to the output of the 6 decoder (see section 3.1.1^0 if d = -1. In this case, addition (sub- traction) occurs immediately because the exponents of the accumulator and operand agree. The A9-m signal sets the Al Eccles-Jordan back to "0" in this case. The activity in the add loop (A9 and A10) is described after the last two options of Al are considered. -.189- If FA fik = 0, neither the accumulator nor the operand are zero, but fa #U = 1. As indicated above, a preliminary shuffle of the contents of A, Q, and M is necessary in this case. The details of this shuffle are given below. In A2 -- which is a particular extension of the Al request -- the assimilated contents of A (KgA = l) are placed in R while the contents of Q are placed in S. OMsS is set so the new contents of S appear as a. In the EAU, d = ea - era - 1 is placed in ES. The Ak Eccles-Jordan is set to "1". When all replies are "0", the Al Eccles-Jordan is set to "0", causing the A2 request to go to "1". When Ai+ becomes active, the contents of S and R are transferred straight into A and Q. OMsA is set so that the new contents of A appear as oc. In the EAU, d is transferred from ES to EA and 22 is subtracted from it by setting -22sD. Consequently, the new output of the exponent adder is d = d - 22 where d = ea - em - 1 during Al. In A5, oc is placed in R and zero is placed in S. The MsS mech- anism is set according to the output of the decoder so that a = -m if SUB or SSC is being executed, while a = m is ADD or ASC is being executed. At the same time, d is placed in ES. During A6, + m is placed in A and is set to "1", indicating that the new contents of M are to be added to the contents of A. DL is set to "0" to insure that gQ and gR are bypassed during A9 and A10. This iso- lates the most significant half of the augend (minuend) which is held in Q. In the EAU, zero is placed in EA and d is placed in EM. EMsD is set with C still set to "0" so that -d - 1 = -ea + em + 22 appears at the out- put of the exponent adder. Since -22 < -d. - 1 < -1, the quantity in A (i.e., + m) is right shifted by the add loop (A9, A10) as in a case 2 addition. -190- A comment is in order concerning -d - 1. Since 23 left shifts of the augend (minuend) were effectively performed by the interchange of A and Q, the remaining number of left shifts for Q is given by < ea - em - 23 < 21. Instead, the addend (subtrahend) is right shifted by the same amount. Because the conditional logic of A9 and A10 is based on an exponent difference that is one less than the true difference, -(ea - em - 23) - 1 = -ea + em + 22 must appear at the output of the D-adder at the time A9 is entered. In A7 the least significant half of the augend (minuend) is placed in M. Control passes to A8 where the activity was described in connection with the FA #2,3 option of Al. If FA #5 = in Al, the request A3-K1 bypasses Ck\ and sets the Kl Eccles-Jordan to "1". In this case, the operand is zero or the accumu- lator is not zero and fa #5 = 1. A null step between Al and Kl (i.e., A3) is necessary because the gEA in Kl may remove the entry request. The Kl - b signal sets the Al Eccles-Jordan to "0" which then activates the Kl control step. We now consider the add loop which contains the A9, A10, and All control steps as shown on D-I269. When the A9 Eccles-Jordan is set to "1", the output of the D-adder lies in the range: -U5 < d < 21. If -U5 < d < -1, AQ, or A is shifted right d + 1 base h places prior to the addition (sub- traction). Bits' are lost at the right end of Q or A depending on whether DL is set to "l" or "0". If < d < 21, AQ is circularly left shifted by d + 1 base h places prior to the addition (subtraction). The result is then circularly right shifted with carries or borrows propagated to the left . Since A9, A10, and All constitute an inner control loop, it is necessary to consider the signal flow through it. The entry logic is -191- somewhat nonstandard in order to start shifting AQ, as quickly as possible when FA #2,3 = 0, For example, if d / -1 in A8, the A9 Eccles-Jordan is set to "1" immediately. Its "0" output, A9 - m is used to set the Al Eccles- Jordan to "0" and thus cause A8-A9 to change from "0" to "1". However, the y output of the A9 A goes to "0" as soon as the Eccles-Jordan in A9 is set to "1" and does not wait for A8-A9 to change from "0" to "1". In all other loops the signal which is analogous to A0-A9 also feeds the A so that it must change back to "1" before the first step in the loop can become active. There are two cases in which the start of A9 is inhibited in this manner. If FA #2,3 = and d = -1, the MsAr must to to "0" before the A9 Eccles- y Jordan is set to "1", so the A9 A cannot go to "0" until the Al Eccles- Jordan has been set to "0" and MsAr returns to "1". A similar statement applies if the A8 Eccles-Jordan is set to "1" at the time A8-A9 changes from "1" to "0". In all control loops the Eccles-Jordan that is analogous to A9 is set to "1" when the loop is entered. It remains at "l" as long as the exit condition is not satisfied (i.e., ex = 0). The ex and ex signals feed — x- the A s analogous to All and A9 respectively. These signals may come from the EXA, EXF, or EXR status memory elements as discussed in section U.3. As — * long as ex = 0, the output of the All A or its equivalent is held to 1 — * while the A9 and A10 A s or their equivalent alternately become active and — * relax. When ex changes to 1 during A10, the output of the A9 A is held to "1" and the output of the All A goes from "1" to "0" instead. This ul- timately sets the A9 Eccles-Jordan back to "0". While control alternates between A9 and A10, the A1C Eccles-Jordan — * is alternately set to "0" or "1". When the A9 A first becomes active, the A10 Eccles-Jordan is set to "0". The replies from the link mechanisms -192- requested by A9 go to "0" and set the A10 Eccles -Jordan to "1". This cannot occur unless the A9 Eccles -Jordan is set to "1" (i.e., not unless A9 - m = 0) When these replies return to "1", the output of the A10 A goes to "0". The link mechanisms which it requests send back "0" replies which cause the A10 Eccles-Jar dan to set to "0". The A10 request and associated replies return to "1". If exa = 0, A9 becomes active and the process is repeated. If exa = 1, All becomes active and sets the Eccles -Jordan in either Kl or A12. This combined with "0" replies from CL and possibly MsS set the A9 Eccles- Jordan back to "0". When the add loop is terminated, the A9 and A10 Eccles- Jordans are both set to "0". The conditional logic associated with A9 and A10 is complicated by the presence of bypass signals called "bya" and "byb" . These signals are used to generate bypass requests for selector mechanisms and certain status memory elements after the shift paths have been established and the only activity is opening and closing the gates in the MAU to shift and in the EAU to count. The negative logic for these signals is given below. bya = (ESsEA) v edc byb = ft ^ (es = -3) v (es = -2) ^ (es = -l) ^ (es = 0) ^ (es = l) v- (es = 2)(cr) The ESsEA signal is generated by the sEA mechanism as shown on D-II85. The Q and cr signals are outputs of the status memory elements of the same name. The edc signal and the (es =) signals are outputs from the EDC F- element and ED register as shown on EDM (D-I50U). Perhaps the best way to describe the action during A9 and A10 is to consider two examples. In the first example let d = -3 so that AQ or A is right shifted 2 places before addition (subtraction) occurs. In the -193- second example let d = 2 so that AQ, is circularly left shifted 3 places before addition (subtraction) occurs and then circularly right shifted the same number of places . Assume d = -3 when A9 first becomes active. Note bya = since the sEA selector is set to EsEA during Gl. Remember KgA was true during decode and is still true. The sSR mechanism is set to l/U AQsSR and CL is bypassed. The MsS mechanism is set to OMsS, If case 2 addition applies, DL is set to 1 so both gS and gR are opened causing the assimilated contents of AQ to be right shifted into SR with the sign bit, a , duplicated in S and S . If case k addition applies (case 2 or case k must apply because d < 0), DL is set to "0" so only the assimilated contents of A (i.e., a) is right shifted into S with CCi and (X , being lost. In either case, the new contents of S appear as a at the output of the S-adder because OMsS is set. In the EAU, gES is opened so that -3 is placed in ES. Note that gES always gates the ED register as well. Since ESsEA is not true during the first pass through A9, fl is set to "1". If dl = 1, EMsE is set and gE opened so the exponent of the addend (subtrahend) is transferred to E as the exponent of the sum (difference). If dl = 0, case k applies and the expo- nent of the augend (minuend) in E is also the exponent of the sum (differ- ence), so E is left unchanged -- gE and sE are bypassed. With this accom- plished, control passes to A10. During this first pass through A10, byb = because es = -3. Both gA and gQ are opened if dl = 1, only gA is opened if dl = 0. The sAQ mechanism is set to l/U SRsAQ and the MsA mechanism is set according to the 9 decoder output. Addition (subtraction) occurs at this point because the accumulator has been shifted right 2 places as required. Therefore, a represents the unassimilated sum (difference). It is necessary to pass through A9 and A10 again to place this sum (difference) in A. -19^- In the EAU, gEA is opened at the same time as sEA is being set to ESsEA. Thus, -3 is placed in EA. Note that the sEA mechanism was previously- set to EsEA or OsEA. Therefore, depending on the timing of the gEA signal, the initial inputs to the EA register may be incorrect. The gEA signal also opens the EDC F-element gate. In this case the EDC F-element is set to EDC = (es = -U)(es = 0)(es = l)(es = 2) = 1. The ESgEM gate is bypassed because es = -3. CR is bypassed and 2sD is selected. This causes the output of the ex- ponent adder to become -1 since C was set to "0" during decode. The sum (difference) is not in AQ or A at this point, so the "done" signal is "0". In positive logic: done = (es = -2) v (es = -l) ^ Q(es = 0) ^ cr(es = 2) When "done" is "0", EXA is again set to "0". Notice that EXA is set to "0" dur- ing Gl and Vk as well to prevent immediate exit from the add loop. With exa = 0, the A9 step again becomes active. During this second pass through A9, bya = 1 because sEA is set to ESsEA and edc = 1. Therefore, gE, sE, MsS, sSR, and CL are automatically by- passed with selector mechanisms and memory elements retaining their old state. Since bypassing yields fast replies, this pass through A9 is termed "fast". If both the gS and gR gates are opened, the unassimilated a representation and the contents of Q are shifted right into SR with q, and q, , being lost. If only gS is opened (i.e., dl = 0), OCs and a, , are lost. This is of no conse- quence since these bits are cleared to "0" during the following decode step. The gES gate is opened, so -1 is placed in ES. (EMsD)(ESsEA) = 1 in positive logic, so Q is set to "0". With this accomplished, control passes to A10. During this second pass through A10, es = -1 so byb = 0. The ■195- sAQ mechanism is set to USRsAQ. If gA and gQ are both opened, the sum (dif- ference) is left shifted into AQ with "0" "being placed in Q, and Q^r. If dl = 0, only gA is opened and the single length sum (difference) is left shifted into A with "0" being placed in A, and A, , . The "done" signal is "1" because es = -1, so the MsA mechanism is set to KgA, and EXA is set to "1". In the EAU, gEA places -1 in EA. The sD mechanism is again set to 2sD, so d = +1 although it is not used. ESgEM is again bypassed. With exa = 1, All now becomes active instead of A9. If dl = 1, case 2 addition was performed so CL is set to "0". This action is unnecessary in this instance but necessary for case 3 addi- tion. Control now passes to Kl. The (k) sequence may find OL overflowed (i.e., Cfov = l) or AQ, zero. Assume dl = at All. This implies that case h addition was per- formed, so some terminal operations are necessary . CL is set to "0" only to obtain a "0" reply, since CL is never set to "1" in A9 when dl = 0. The MsS mechanism is set to OMsS for use in A12. The carry -borrow logic mean- while has examined the Ot , m , and m bits as described in section 3.1.13. The gCB gate is opened in All to allow the output of this logic to be stored in the CB F-element . In A12 the most significant half of the augend (minuend) is placed in S and the least significant half of the sum (difference) is placed in R. A carry, a borrow, or nothing is now added to the kh — position of S. The positive conditional logic which determines whether a carry, a borrow, or nothing is added appears below. -kk (cb)(m Q ) =1 -> Add 2 (cb)(m ) =1 - Add -2 -196- cb = 1 - Add Nothing The cb signal is the true output of the CB F-element and m n is the — bit of the M register. Since the M register contains the least significant half of the augend (minuend), m and m both have positive weight at this point and are not -hk necessarily equal. To add 2 ,By MM and CS requests are sent to the MsS mech- anism. (See section U.2.) To add -2 , MMsS, CS is the setting requested. If nothing is added, By MM and By CS requests are made to cause MMr = CSr = 0, but the state of the MsS mechanism is left at OMsS as established in All. The most si< nificant half of the sum (difference) appears as a. During A13, o and the contents of R are transferred straight in AQ, and DL is set to "1". Since KgA = 1, the assimilated representation of A ap- pears as OC. In AlU, the MsS mechanism is cleared to the OMsS state by a KMsS re- quest. This is necessary if MsS was set to MMsS or CS during A12 as discussed in section J+.2. Control then passes to Kl. We now return to the second example. Assume d = 2 when A9 becomes ac- tive for the first time. This implies a case 3 addition in which AQ is circu- larly left shifted by three places, M is added (subtracted), and the sum (differ- ence) is circularly right shifted three places. This means the addition (sub- traction) is done with the S-adder. Furthermore, in this particular case bya = byb - for all steps in the loop. During the first pass through A9, UAQsSR is set and CL is set to "l". As discussed in section 3.1.2.12, this opens the paths a. , -+ R^o and a -* R L,V The gS and gR gates are both opened, so a circular left shift of one base k po- sition occurs. Note that KgA = 1 so a is assimilated, ft is set to "l". The ES register is set to +2 when gES is opened. The gE and EMsE requests are by- passed because the exponent of the augend (minuend) in E is also the exponent -197- of the sum (difference). The MsS mechanism is set to OMsS. Control passes to A10 when this is accomplished. During the first pass through A10, USRsAQ, is set since CR was set to "0" during decode and es = 2. Because CL is set to "1", the paths a , -» Q« _ and a -* Q, , are now open. When gA and gQ are opened, another circular left shift is performed, placing the result in AQ. The four most significant hits of the as- similated augend (minuend) are in Qi , Sio> ^kv an ^ ^kk a ^ this point. OMsA is set and EXA is set to "0" because es = 2 and CR is set to "0". In the EAU, +2 is placed in EA and EM from ES. The latter transfer is made to save the count for the number of circular right shifts necessary follow- ing the addition (subtraction). The sD selector is set to 2sD while CR is by- passed -- meaning that CR retains its "0" setting. As a consequence of -2sD and C being set to "0" during decode, d = now appears at the output of the expo- nent adder. Control returns to A9 since exa = 0. During this second A9 step, another circular left shift is performed with the MsS mechanism being set according to the output of the Q decoder. The sum (difference) then appears as a in unassimilated form. The gES gate places d = into ES. Q is set to "0". At the same time, the R half-subtractor logic begins to inspect the outputs of R, , R^r, S , and the t input to the high S special adder. As indicated in section 3.1.12, this information is sufficient to determine whether a unit must be borrowed from the bit of the augend (minuend) that is now in R^* If so, a unit is borrowed from R^-, R^k during the next A10 step in which a circular right shift of one base h position occurs. If both R, and R, , contain "0", the borrow is propagated by placing a bit in Am during A10. During the second A10 step, l/i+SRsAQ is requested and CR is set to "l". OMsA is requested and EXA is set to "0" because (es =t 0) and ft = 0. Note that even though cr changes from "0" to "1", l/USRsAQ, is set because es = 0. Since -198- cr = 1, the paths a -» A and a -* A are now open. Therefore, when gA and gQ are opened, the sum (difference) is circularly right shifted one base h po- sition into AQ, with borrow propagation. The signals a and a represents the outputs of the R half-subtractor as discussed in section 3.1.12. If a borrow is ' • * * necessary, r> = r, , = 0,a=a=l and Q.i is set to 1 . Otherwise, Qii is set to "0". In the EAU, gEA is performed while ESgEM is bypassed. EMsD is requested, so d = +2 since EA now contains and C was set to "0" in decode. Control returns to A9 because exa = 0. During the third pass through A9, the sum (difference) is circularly right shifted one more base k position into SR with a unit borrowed from Qkoj Q., if Q,> contains a "1". Since l/^AQsSR is requested and CR is set to "1", the paths OL -> S and OL -> S are now open. As discussed in section 3.1.12, t ! OL_? and OL are two outputs of the Q half-subtractor. OMsS is requested since d = 2. Furthermore, ft is reset to "1" because EMsD is the present state of the sD mechanism. The d = +2 output is placed in ES via gES. The CL memory element is bypassed but remains set to "l". Control now passes to A10 for the final step in the loop. During the third and final pass through A10, the last circular right shift places the unassimilated sum (difference) in AQ. The "done" signal is now "1" because cr(es = 2) = 1. Thus, KgA is requested and EXA is set to "l". In the EAU, +2 is placed in EA, -2sD is requested. The D-adder output is now zero. Since Q, is set to "l" and es = 2, ESgEM is performed again, but this does not affect the count. Since exa = 1, control now passes to All. In All dl = 0, so CL is set to "0" and control passes to Kl. Since KgA was requested during the last pass through A10, OL is assimilated, so the Cfov and Cttiz signals are reliable when Kl becomes active. -199- A short summary of the shift patterns in the add loop for -6 < d < 5 is given "below. The letters "F" and S" denote "fast" and "slow" steps depend- ing on whether the bypass signals bya and byb are "1" or "0". d = ea - em - 1 ea = augend (minuend) exponent em = addend (subtrahend) exponent For Cases #2 and #k d =* -6 es = -6 es = -h es = -2 d = -5 SR es = -5 es = -3 es = -1 AQ d = -5 d = -3 d = -1 d = -h SR es = -h AQ es = -2 d = -h d = -2 d = •200- SR es = -3 es = -1 d - -3 AQ d = -3 d = -1 SR d = -2 AQ es = -2 d = -2 d = SR d = -1 AQ es = -1 d = -1 es = d = SR AQ SR AQ d = -201- a = 1 SR AQ es = 2 a = o SR AQ es = 1 a = 2 (i = i Sj This shift is slow because ESgEM occurs with EMsD. a = 2 SR es = es = 2 AQ SR AQ a = 2 a = o •202- (f) This step is not truly fast since ft is set to "0" . SR es = h es = 2 AQ d = 3 SR AQ - a = h a =» i a = 3 SR - es = es = 2 = k AQ aa SR AQ -203- a = 5 SR AQ SR AQ es es = 2 d - 6 d = 1 a - 3 a = 5 This summary shows that for d < -7 and d > 6, at least half of the steps in the add loop are faster as a consequence of the bypass signals, hya and byb . 5.6 The Exponent Arithmetic Sequence (jC This sequence is used only by the SBE, ADE, CSE and CAE orders. It is entered directly from Gl in all cases as shown on D-1270. The exit from E3 always returns control to Gl. During Gl, the C memory element and the sEA and sD selector mechanisms are set such that the D-adder output is: d = ea - em SBE d = ea + em ADE d = -em CSE d = em CAE In this notation, ea represents the accumulator exponent which is also held in E. -20U- m The d output as defined above may change when El becomes active. In Gl, the FlgMEM gate places Fl, in both EMg and EH,. At the same time, Fl. . is placed in M, « . If eight -bit exponents are being used, the bit in M. , is the true sign bit of the exponent in EM. To effect its transfer to EH,, the ,, , gEH, gate is opened when El becomes active. This may cause d to change. When E2 becomes active, d is placed in E as the new exponent of the accumulator. This output is also inspected by the exponent decoder. If d < -128, a "1" is gated into the ESZ F-element of the ED register. This gating is done by gED = gES ^ DgE as discussed in section 3.2.U. When E3 becomes active, Z is set to "1" if esz = 1 and is bypassed other- wise. OV is set to "1" if esov = 1 and Z is set to "0". It is bypassed other- wise. Control then passes to Gl. 5.7 The Store Sequence (S As shown on D-I283 and D-128U, the (s) sequence has entries from Gl, PI, Fk, and R3. The normal entry to (i) is via SI. SAM and STU enter SI dir- ectly from decode. STR, XCH, STC, and STN go through (g) and (r) and then en- ter SI. This is done to normalize the fraction in AQ, (i.e., insure that -1 < f < -l/h, f = 0, or l/k < f < l) before A is rounded, assimilated and stored. Note that XCH involves a terminal clear add operation. The SSC and ASC orders are equivalent to SUB or CSB, STC and ADD or CAD, STC respectively except Gl does not become active between the subtraction or addition and the store clear oper- ation. For STF, SIF, SEQ, and SIA control enters the (5) sequence from Gl and then passes through (f) to SI. In (f) AQ, is shifted right or left until its ex- ponent is equal to the value specified (i.e., until e = for STF, e = 22 for SIF, e = m during Gl for SEQ, and e = 6 for SIA). If e = during Gl when STF is decoded, control passes from PI to SI directly. The first nonstandard entry is -205- S2. This entry is used by the SAL and SEX orders. The second nonstandard en- try is S3 which is used only "by the SRM order „ Consider AQ, and E at the time SI becomes active. Regardless of what preceded the SI step, the assimilated contents of A and the seven least signif- icant bits of E will be stored in FO (OUT) during S9 with or without modifica- tion due to fractional overflow, normalization, or zero corrections. The STU, STR, XCH, STC, STN, SSC, ASC, STF and SEQ orders round the contents of A prior to storage in FO. The round-off logic is discussed in section 3.1»7« It should be noted that round-off by itself does not change the SI contents of A. However, the XCH, STC, STN, SSC, and ASC orders do change the SI contents of AQ and some- times the SI contents of E for other reasons. Of the orders which enter SI only SAM, SIF, and SIA do not round the contents of A prior to storage in FO. The fractional overflow, normalization and zero corrections are discussed below in conjunction with the ST step. In SI the RO status memory element is set to "1" for those orders which round A prior to storage in FO, i.e., those orders for which \(j v Q v x) =1. As discussed in section 3°lo7^ ro = 1 allows the round-off, p, to assume a value of "1" or "0" as determined by the bits in A, , , A, . , and Q. The RO memory ele- ment is set to "0" for the SAM, SIF, and SIA orders, i.e., the orders for which \ " j0 p x = 1. Note that the x variable is unnecessary in these expressions. To allow adequate time for the round-off, p, to change the output of the carry gener- ator and A-adder, KgA is requested although the MsA mechanism is already set to the KgA state. This request is always made even though RO is set to "0". As pointed out in section 4.2, the MsAr response to this request is guaranteed to be delayed enough to insure the cc-logic signals (such as aov and na) are reli- able when the next control step -- Sk in this case -- becomes active. When SI becomes active during the execution of an SSC, ASC, or STC order, the TC memory element is set to "1". In this event the sSR selector -206- is set to QAsSR and V is set to "1" in preparation for an interchange and down right shift into A. If store clear type orders are not being executed, TC is set to "0" so OAsSR is the requested state of the sSR mechanism and V is set to "0". This allows a to be placed in R and zero to be placed in S during Sk . A zero must be placed in S when STN is the order. The MsS mechanism is always set to OMsS to accommodate the terminal steps of store clear type orders. The activity in the EAU during SI consists of placing the accumulator exponent in EA and setting sD and C such that d = ea. The delay provided by the KgA request gives the exponent decoder -- EDM (D-150^) -- time to inspect d and decide whether d < -6k. During Sk f oc (rounded or unrounded) is placed in R while Q or zero is placed in S depending on whether TC is set to "1" or "0". The D-adder output is gated into ES and the F-elements of the ED register are set to their new values according to the output of the exponent decoder. In particular, the ES < -6k F-element is set to "1" if d < -6k. An artificial delay is also used to pre- vent S5 from becoming active until the output of the R zero detector (D-I505), RZ, is reliable. In describing the S5 step, we first assume STN is the order being exe- cuted. X is set to "l", so the contents of R are transferred to M. Since MsS is requested and S contains zero, o = -m = -r = -OC where OC represents the assimi- lated contents of A (rounded or unrounded) during SI. Control passes to S6 where a is gated straight into A, and zero is placed in Q. KgA is again requested simply to allow time for the A-adder out- put to reflect the new assimilated contents of A (new a). X is set to "0" to prevent re-entering S6 again when control passes through Sk and S5 the second time . When Sk becomes active the second time, (new Ot) = -(old Qc) is placed -20^ in R while zero is again placed in S, The value of d has not changed, but gES gates it into ES again. After a delay to allow RZ to "become reliable, S5 is ac- tivated for the second time. Since X is set to "0", control may pass to S9 directly if fractional overflow, normalization, or zero correction are unnecessary. Otherwise, control passes to S7 and S8 where the necessary corrections are made,, We now investigate the nature of these corrections, N is set to "1" during Gl for the SSC, ASC, STR, XCH, STC, and STN or- ders. This means the fractional part of the operand being stored must lie in the normalized range. For each of the above orders, the accumulator was normal- ized by the (r) sequence prior to the SI entry. However, the roundoff in SI may cause the S5 contents of R to equal -l/k or +1 both of which are outside the nor- malized range. Of those orders which enter (sj through SI and round the contents of A to R, J is set to "0" for STU, SSC, ASC, STR, XCH, STC, and STN. This means the fractional operand being stored must not be overflowed. Note that if the frac- tion is guaranteed to be normalized when stored, it is also guaranteed to be non-overflowed. The converse of this is not always true. Of the above orders, only STU does not guarantee that the fraction stored is normalized. Under all circumstances, the A-adder output, CU, and the contents of R agree during S5„ As discussed in section 3«1.9> no; = if a = -\/h while net = 1 if a = +1. If -1 < a < 1, Cfov = 0, but if a = +1, aov = 1. Therefore, the con- dition Qtov = 1 must also be used to detect when OL is not normalized. It is clear that if j = and (X = +1, the fractional overflow in R must be corrected by an effective right shift of one base k position and the ex- ponent in ES (also contained by EA) increased by a unit to compensate for this shift. In this case, j(aov) = 1 and n(na) , 0, so C is set to "l" and the sD -208- mechanism is left in the OsD state, yielding d = ea + 1 as required. The KgA request provides sufficient delay for the output of exponent decoder -- particu- larly the (d < -6k) signal --to become reliable. The fraction in R is changed to + l/k by the logic between the high end of R and FO. (See section 3.1.2.1U) If n = 1 and CU = -l/k f the fraction in R must be normalized by an effective left shift of one base k position and the exponent in ES (also con- tained by EA) decreased by unit to compensate for this shift. Since n(na) = 1 and j(aov) =0, C is set to "l" and -2sD is requested to yield d = ea - 1 as re- quired. KgA is again requested to allow time for the (d < -6k) output of the exponent decoder to become reliable. When n(na) = 1 or j(aov) = 1, it may also happen that \[z v RZ ^ (es < -6k)] = 1. This does not affect the requests discussed above. If \[z v RZ v (es < -6k)] = 1 and n(nCc) = j(aov) = 0, the exponent is left un- changed in S5 (i.e., C is set to "0" while the sD and MsA mechanisms are bypassed) During S7, X.[z •- RZ v (d < -6k)] is examined. If this expression has a value of "1" (i.e., the condition is true), the number stored in FO during S9 is considered zero. Therefore, ES is cleared to -6k and R is cleared to zero. The (ES < -6k) F-element in the ED register is cleared to "1" to denote the change in ES. Note that Z is not set to "1", but it may already be in that state. There are two other interesting observations. If es = -6k during S5 with \ = n(ndO = and j(aov) = 1, d = -63 during S7, so ES is not cleared to -6k. On the other hand if es = -63 during S5 with \ = j(aov) = and n(na) = 1, d = -6k during S7, so ES is cleared to -6k. In any event, if \[z •>/ RZ v (d < -6k)] = at the time S7 becomes active, the output of the D- adder (d = ea, d = ea + 1, or d = ea -l) is gated into ES. The S8 step is used only to check that (OUTFL)d = 1 before S9 becomes active. This signal is "1" when AC has unloaded the previous contents of the -209- FO (OUT) and set OUTFL to "0" so S9 is free to load FO with bits from R and ES. Returning to S5 momentarily, we note that the correction path is never taken by the SAM order. SAM sets N to "0" and A to "1" during Gl. Since it never rounds the contents of A during SI, Ctov = so j(aov) = 0. Consequently, SAM simply uses S5 as a null step to check that ( OUTFL )d = 1 before activating S9. Except for STN, the other orders which use SI also use S5 in the same way if fractional overflow, normalization, or zero correction is unnecessary. Before considering the action during S9, we return to the S2 and S3 entries. SAL and SEX enter S2 directly from decode. SAL stores O.q q ... % in FO through FO, , and es/-, es . . . es in FO, through FO . SEX stores 0.q_ 1 q Q ... Qog in F0 through FO g and es , es , es , es , es , es , esg, es- . . . es in FO through FO . In S2, the contents of Q are shifted right into R with "0" placed in R and R n since V is set to "1". This is described in section 3.1.2.12. The exponent of AQ appears at the output of the D-adder and is gated into ES. Con- trol then passes to S3 which is used as a null step to check that ( OUTFL )d = 1 prior to activating S9. The SRM order enters S3 directly from decode. It is used primarily to store the remainder immediately following division. The (jj) sequence leaves the fractional part of the remainder in R and its exponent in ES, so SRM needs on- ly to check that ( OUTFL )d = 1 prior to activating S9. During S9, RESgFO transfers the bit configurations in R through Ri i and ES^ through ES or a modified version of this configuration into FO through FO . For SEX, X is set to "l" so the logic discussed in section 3.1.2.14 is used to copy es into FO through FO,, . OUTFL and RO are set to "0" even though the latter may already be in the "0" state. OV is set to "l" -210- if j(aov) = 1, i.e., if a is overflowed and either STF or SEQ are being executed. Trouble may arise here because RO is set to "0" at the same time. Since SIF and SIA never round the contents of A in SI, Cfov = for these orders even though j = 1. For SRM, j(ccov) = because Ot is never overflowed at the start of Gl. 0V is also set to "l" if z RZ \(es © es ^) = ^-* That is, if the accumulator is nonzero, R is nonzero, and an arithmetic store order is executed (this excludes SAM, SAL and SEX), the number stored is overflowed if es £ es f.- This is clearly the case if es = and es/- = 1 because its exponent is at least +6U. If es = 1 and es/- = 0, its exponent is at most -65, so es is not overflowed. 0V is bypassed instead of being set to "l" because RZ = 1 since R was cleared to zero in either ST or D19 if es < -6k in S9. When S10 becomes active, control passes via a null step to Bl in case XCH is being executed, i.e., in case n(tc)0,0p =1. If other non-store clear type orders are being executed, (tc)(n v/ Q v 9 ) =1, so v is set to "0". This is necessary only for the SAL and SEX orders, but it is done for all orders in this category. When d = 0, the paths so -> A and so -*■ A are closed while the paths Q!, -* R and a, , -* R are opened -- assuming in all cases the proper settings. After V is set to "0", control passes to Kl. Even though RO is set "0", OC may be overflowed at this point so the (k) sequence must be entered. If STN is being executed and AQ, contained -1 during SI, AQ contains +1 during S10. For SSC, ASC, and STC, TC is set to "l" during S10. During SI q.,-^ ... %^ was placed in S S ... S, , with S and S set to the value of the round-off, p. This represents the round-off correction for the least significant half of the original contents of AQ,. Since V was set to "l" and OMsS was requested dur- ing SI, so = s = p and so = s_ = p appear at the inputs to A and A following the S10 request for l/l+SRsAQ,. Thus, after gA is opened in S10, the bit configuration, p,p,q_ l q. Q ... %2.>% 2 is P laced in A _! A o tnrou g h \-?\k' •211- If the round-off, p, was a unit, the least significant half of the original con- tents of AQ (contents during Si) is givan a negative sign as required. Since the exponent of the original contents of AQ is still in EA, S10 sets C to "0" and requests -22sD to produce the exponent, d = ea - 22, for the new accumulator contents . In Sll, this new exponent is placed in E while V and TC are set to "0". Control then passes to S12. During S12, Q is cleared to zero and Z is set to "l" if d = ea - 22 < -128. Otherwise, Z is bypassed. In any case, control passes to (k) where the accumulator is checked for zero. Note that oc is never overflowed following a store clear type order. 5.8 The Shift Sequence (F Only the LRS and SRS orders enter the \F) sequence directly. The STF, SIF, SEQ, and SIA orders enter (^F) via {J?) which is discussed in section 5.9. In all cases, the number of base h places that AQ, must be shifted is equal to the output of the D adder, d, at the time Fl first becomes active. For LRS and SRS, d equals the exponent that is placed in EM during Gl. For STF, SIF, SEQ, and SIA, d = ex - e, which is formed during P2, where e is the ori- ginal exponent of AQ and ex = 0, 22, em during Gl, or 6 respectively. If d > 0, the shift direction is right. The shift direction is left if d < 0. When shifting right, the sign bit of the assimilated accumulator is inserted at the left end of A and S provided A is set to "0". Zeros are insert- ed at the left end of A and S if A is set to "l" (i.e., if the logical orders LRS and SRS are being executed). When shifting left, bits are lost at the left end of A and S, and 0V is set to "l" if STF, SIF, SEQ, or SIA is the order ■212- being performed. OV is bypassed in LRS and SRS orders since they are logical in nature. Assume the Fl control step has just been activated by an entry from Gl or P3 as shown on D-127^. In either case, KgA = 1. The shift loop exit Eccles-Jordan, EXF, is set to "0" during Gl or P3, but the loop may not be used. It is used if (z v \)(-^5dUU)(d = 0)= 1. It is bypassed to FU if z\ ^ (d = 0) = 1 An exit to F5 via a null step occurs if (z v ^(-l^cU^) - ]_ g These conditions are mutually exclusive and yield "l" identically when joined. We consider them separately in the order given. Suppose (z v \)(-U5dUU)(d = 0) = 1. First, this condition requires that Z be set to "0" or that an LRS or SRS is the order if Z is set to "l". Second, the shift must be in the range: U5 < d < hk. Third, d must not be 0. The logic which generates the -k^dkk signal is part of the exponent decoder which is described in section 3-2.^ and shown on EDM (D-I50U). If d = -k^ } the left shift moves the bits in Q, and Q, > to A and A , and places zeros in all positions to the right of A . The AQ register could just as well have been cleared to zero in this case, since Q, _ and Q, , are always cleared to zero during Gl. The limit d = -U5 is also used in decoding the fa #2 signal, so it was convenient to use it for controlling the shift sequence. If d = kk, the original assimilated sign bits, OC and a , are placed in Q, and Qr p . There are no provisions for shortening these extreme shift operations for an SRS or- der. If d = 0, the entire shift loop is bypassed to Fk. To summarize, Fl re- quests the various link mechanisms associated with the shift loop operation when (z v \) = 1 and -U5 < d < -1 or 1 < d < hk. The Fl, F2 loop operates very much like the A9, A10 loop. During the first pass through Fl and F2, the shift paths in the MAU are established as well as a count loop between the ES and EA registers in the EAU. if d < -2 ■213- during the first pass through Fl, 2sD is requested in F2. If d = -1 or d = 1 during Fl, then OsD is requested in F2. If d > 2 during Fl, -2sD is requested during F2. If SRS is being executed, DL is set to "0" so only gS and gA are opened during Fl and F2. In this case, hits are either lost or zeros inserted at the right end of S and A while the contents of R and Q remain unchanged. As an example, assume d = -6 at the time Fl first becomes active. The sEA mechanism is set to EsEA during decode and is unchanged at the time of entry to (f) even via (V). Thus ESsEA = 1, so UAQsSR and OMsS are requested while Tl is set to "l" just as in the first A9 step of the (A) loop. Opening gS and gR (provided dj? = l) causes the assimilated output of the A adder (KgA = l) and the contents of Q to be shifted left into SR. If A is set to r "0" and na = 1 (see section 3.1.9), OV is set to "1". That is, if a is nor- malized at this point, a left shift into S produces modulo 2 overflow as a minimum, so OV is set to indicate this. At the same time, d = -6 is placed in ES. During the following F2 step, fl = 1 and es < -2 so ^SRsAQ, 2sD, KgA, and ESsEA are requested, Opening gA and gQ (provided di = l) causes the assim- ilated output of the S adder (no stored carries in S) and the contents of R to be shifted left into AQ. KgA is requested again in lieu of setting OMsA. When gEA is opened and C set to "0", the new states of the sD and sEA mechanisms cause d = -h. If "done" = (es == 2) " (es = l) v ( es = -l) ^ (es = -2) ^ SZ(RZ ^ dj) = 1 EXF is set to "l" so that the next control step is F3 instead of Fl. In our ex- ample, "done" could only equal "l" if both S and R contained zero or- if S con- tained zero and DL is set to "0". This possibility must be checked during every cycle of the shift loop regardless of the shift direction. We assume -214- I II J II done" = on this pass through F2. If OV was set to 1 during Fl or if \(ns)(es < -2) ■ 1, then OV is set to "1". Clearly, if es < -2 and the contents of S are normalized, the left shift into A causes modulo 2 overflow at least. Since A and S now contain assimilated representations, the na and ns signals are used to detect imminent overflow during the remaining cycles through the loop. During the next pass through Fl, AQ is again shifted left into SR, and d = -k is placed in ES. 0, is set to "0" while the sSR and MsS mechanisms 1 are bypassed to obtain fast reply signals. OV is set to "l" if necessary. In the following F2 step, SR is shifted left into AQ, and es = -k is placed in EA to produce d = -2. Since D, = and es = -k, the sAQ, sD, MsA, and sEA mechanisms are bypassed to obtain fast reply signals. OV is set to "l" if necessary. Unless SZ(RZ ^ dj?) = 1, EXF is again set to "0" and control returns to Fl. During this third pass through Fl, the operations performed during 1 the preceding pass through Fl are repeated. OV is set to "l" if necessary. During the following F2 step, SR is again shifted left into AQ by opening gA and gQ while sAQ and MsA are bypassed. In the EAU, es = -2 is placed in EA, causing d = 0. If d had been -5 originally, then es would equal -1 at this point. The sAQ and sD mechanisms would then be set to SRsAQ and OsD so that SR could be gated straight into AQ. Whether d = -6 or -5 originally, "done" is "1" at this point, so EXF is set to "1" meaning that F3 is active next in place of Fl. If es = -2 and \(ns) = 1, OV is set to "1" for the reason given above. If es = -1 and \(ns) = 1, OV is bypassed since the output of SR is gated straight into AQ, and overflow does not occur. In the F3 step, DL is set to "1" to permit inspection of both A and Q for zero in K2 if necessary. The a„gA gate insures that AQ is not overflowed -2.I5- modulo 2 when entering either the [Kj or {Sj sequences. Note that if a , £ a„ at the "beginning of the F3 step, OV was set to "l" during the last pass through F2. When these operations are accomplished, control passes to Fk. Fk is a null step that may be entered from Fl, F3, F8, or F9. Its Eccles-Jordan is set to "l" only when F^ is entered from F3. In this case, the null step acts as a delay to insure that the output of the round-off logic is reliable if RO is set to "1" during SI. We now return to the initial entry at Fl and assume z\ v (d = 0) = 1. In this case, the loop is bypassed and control passes to Fk immediately. This occurs for the STF, SIF, SEQ, and SIA orders if Z is set to "l". There is no provision for bypassing Fl, F2 if LRS or SRS is the order and the accumulator is zero (i.e., Z is set to "l"). The shift loop is bypassed for all six orders which use (f) if d = at the time Fl is initially activated. If (z ^ \)(-k^,dkk) = 1 when Fl is first entered from Gl or P3, control passes to F5 via a null step. This null step was necessary in the original de- sign, but is not needed now. The purpose of this special bypass is to place a field of all zeros or units in A or AQ directly instead of using k6 left shifts or U5 right shifts. If \(d > 0)(Sign A) = 1, an arithmetic right shift of more than kk places is required, and the contents of AQ or A has a negative sign. Conse- quently, a field of units must be placed in AQ, or A depending on whether &Z = 1 or dj} = 0. Therefore, F5 requests MMsS,CS and bypasses MsS. Since the accumulator is not overflowed by a right shift, 0V is bypassed. If \ ^ (d > 0)(Sign A) = 1, either a logical shift of more than kk places is required, or else an arithmetic right shift of more than kk places with a positive accumulator is required. In either case, a field of zeros must he placed in AQ or A depending on whether &£ = 1 or dJJ = 0. OMsS is requested -216- while MMsS and CS are bypassed. AQ is not overflowed, so OV is bypassed. In terms of reply circuitry, it would have been more economical to request KMsS instead of OMsS. This would have avoided the need to bypass MsS, MMsS and CS in the three options of F5 . If \(d > 0) =1, an arithmetic left shift of more than U5 places is required. The accumulator overflows so OV is set to "1". If AQ had been zero, the Fl-FU bypass would have occurred and F5 would not be active. Preparatory to placing a field of zeros in AQ or A, OMsS is requested while MMsS and CS are bypassed. Here again, KMsS should have been used in place of OMsS. During F6, the output of the S-adder is gated straight into A while Q is left unchanged. Since S contains zero, o = t, i.e., a is the output of the MsS selector. In F7, the contents of A, which are assimilated and either all zeros or all units, appear at the output of the A adder unaltered because KgA = 1. Thus, gR transfers a into R. KMsS is requested to clear the MsS mechanism to the OMsS state as explained in section h.2. As shown on D-1275, control passes to F8. If &£ = 0, the SI or Kl Eccles-Jordan is set to "l" via Fk, although the Fk Eccles -Jordan remains at "0" as shown on D-127^-. If di = 1, the new contents of R, which agree with the present contents of A, are gated straight into Q and control passes to F9. F9 is a null step in which the Eccles-Jordan in SI or Kl is set to "1" via Fk, although the Fk Eccles-Jordan remains at "0". This null step acts as a delay to insure that the output of the round-off logic is reliable if R0 is set to "1" during SI. 5.9 The Store Preliminaries Sequence P) The logic for this sequence appears on D-1275. The (P) sequence is >17- used by the STF, SIF, SEQ, and SIA orders. The purpose of this sequence is to establish the number of base h places the accumulator must be shifted before its exponent equals the one specified by STF (e = 0), SIF (e = 22), SEQ (e = em), or SIA (e = 6). At the start of each of these orders, Gl transfers the exponent of AQ to EA from E and sets OsD and C„ Therefore, when PI becomes active, the expo- nent of AQ, appears at the output of the exponent adder, and the exponent of what was in Fl (IN) during Gl is in EM„ During PI, d is placed in ES and E is loaded as follows: STF -» E SEQ em - E SIF 22 -» E SIA 6 -> E If the exponent decoder finds that d = when STF is the order being executed, i.e., if 9 9 (d = 0) = 1, control passes to SI directly. Otherwise, the P2 Eccles-Jordan is set to "l". In P2, the exponent of AQ, is transferred from ES to EM, and the contents of E are placed in EA. By setting EMsD and C to "l", the new value of d may be expressed as follows where em represents the present exponent of AQ and ea rep- resents the contents of EM during PI. STF d = - em SEQ d = ea - em SIF d = 22 - em SIA d = 6 - em It is clear that d is the shift difference which is used by the (f) sequence as explained in the preceding section. During P3, the EXF Eccles-Jordan is set to "0" since control now passes to Fl. Note that the actual request for EXF' appears on D-127^. ■218- 5.10 The Normalize Sequence Qy The Qy sequence logic appears on D-1282. It is the first sequence after Gl for MPY, DIV, NDV, VID, STR, XCH, STC, STN, and DAV. (r) is used to "normalize" the fraction, f, in AQ or A depending on whether DL is set to "1" or "0". Except for MPY and DAV, the (r) sequence left shifts the fraction in AQ or A until it is normalized (i.e., -1 < f < -l/k, f = 0, or l/k < f < l). In the case of MPY or DAV, the left shift stops when the fraction in AQ is normal ized or when Q contains zero, whichever occurs first. For all cases except the re-entry from D4, DL is set to "l" so the contents of AQ are normalized. When (R is entered from T)k, the fraction in A is normalized while the contents of Q are left unchanged. All entries to (RJ gate the EXR status memory element which controls exit from the loop (Rl, R2). The positive logic for setting EXR to "l" (meaning exit from the normalize loop) is given "below. EXR = na >s z(d^) v (za)(dl) vn^Q^) ~ j(QZ) It is important to note that if EXR is set to "l" during entry to Qy, then R3 instead of Rl becomes active -- meaning the normalize loop is bypassed entirely. This occurs if ot. is normalized (KgA = 1 so oc is the assimilated representation of A), if Z is set to "l" initially, or if MPY or DAV is the order and Q con- tains zero, i.e., QZ = 1. Since ZA is always set to "0" during Gl, an immedi- ate bypass of (jy when entering from Dk is not possible. However, if A is found to contain zero during any pass through R2, then ZA is set to "l" and exit oc- curs. Because the exponent of AQ or A is reduced by a unit for each base k left shift of the fraction, underflow (i.e., d < -12$) may occur and set Z to "l" during any pass through R2. In the case of MPY or DAV, Q may become zero during any pass through R2, causing an exit from the normalize loop even though the contents of AQ may not be normalized. -219- Assume that EXR is set to "0" during the initial entry to Rl. The fraction to "be "normalized" is in AQ or A and its exponent is in E. KgA = 1, so a is the assimilated representation of A. The assimilated contents of AQ or A is shifted left into SR or S depending on whether DL is set to "l" or "0". To allow the new contents of S to appear at the output of the S-adder as a, the MsS mechanism is set to the zero state. The exponent in E, e, is placed in EA, and the sD mechanism is set to -2sD. If a will appear normalized after a single base h left shift, na - 1. Otherwise, na = as discussed in section 3.1.9. If the new contents of SR or S are normalized, na = 1 and the exponent should ! only be decreased by a unit. Thus, na = 1 sets C to "l", leaving d = e - 1. If the new contents of SR or S are not normalized, na = and at least one more base h left shift will be required, so the exponent should be decreased by two units. Therefore, na = sets C to "0", leaving d = e - 2. During R2, the contents of SR or S (now in assimilated form) are gated left or straight into AQ depending on whether C is set to "0" or "l" as explained above. The output of the exponent adder, d=e-lord=e-2is placed in E. If d < -128, dz = 1 so Z is set to "l", indicating that the accumulator is now considered zero. If S is found to contain zero, sZ = 1 so ZA is set to "l" pro- vided DL is set to "0". That is, if S contains zero during this first pass through R2 and a single length normalization is being performed ( ( R) entered from Dk) , the number being normalized is zero. Furthermore, if R is gated in- to Q, the contents of Q may now be zero in which case QZ = 1. EXR is set to "0" or "1" during R2 depending on the output of the logic given above. If exr = 0, R becomes active again, and the loop continues until EXR is set to "l". If exr = 1, R3 is activated instead of Rl, and control passes to SI, VI, Ml, or Dl depending on the order. For STR, XCH, STC, and STN, n J = 1 so si is activated. For DAV, j = 1, so VI is activated. For MPY, n 9-.9^ = 1, so Ml is activated. For DIV, NDV, and VID, n j(y v ) = 1, so Dl is activated. -220- 5.11 The Difference Absolute Value Sequence (v) The logic for this sequence is shown on the right side of D-1280. It is used only by the DAV order as indicated in Table I. When VI is activated following the Qy sequence, the accumulator is either normalized or at least Q contains zero. During the first pass through V2, V3, and V^, the contents of A are rounded and placed in M, while the abso- lute value of the contents of M is placed in A with Q, cleared to zero. During the second pass through V2, V3, and VU, this process is repeated, and 9 is set to "0" so that ap|-|m| is formed by the Qu sequence. When VI is activated following (r) , OL represents the rounded value of the contents of Q. The exponent of the accumulator is placed in EA while the sD mechanism is set to EMsD and C is set to "0". These operations establish the in- itial state of the EAU prior to entering the (a) sequence. During V2, OL is placed in R while zero is placed in S. MsS is request- ed if M contains a positive number; MsS is requested if M contains a negative number. Thus a = |m| . In V3, |m| is placed in A while Q is cleared to zero. R0 is set to "0" since round-off is complete. Since j = 1, 9 is set to "l" to obtain a "0" 9 v signal even though 9 is already in the "1" state. This avoids a bypass request to 9 . During VU, the contents of R (a„) are placed in M. J is set to "0" so that when V3 becomes active the next time, 9 will be set to "0". EXA is set to "0" as a preparatory step to entering the [A) sequence. Since 0=1 following the first pass through Vh, control returns to V2. At this point, a^ appears in M and |m| appears in A. During V2, |m| is placed in R and zero is again placed in S, If a- is positive, MsS is requested. If a„ is negative, MsS is requested. Therefore, a = ja-J. -221- In V3, |a-J is placed in A while Q is again cleared to zero. RO is again set to "0" simply to obtain a zero reply. During this pass through V3, j = 0, so is set to "0". In VU, |m| is transferred to M. J and EXA are both set to "0" again to obtain "0" replies. Because d. = at this point, control passes to Al. Note that 0=0 and the other status memory element settings for DAV cause a sub- traction to occur during the (T) sequence. The exponents of jm| and |ap| are in EM and EA respectively. Since EMsD and C were requested during VI, d = ea - em - 1 appears at the output of the D-adder when Al becomes active. It is interesting to note that |m| ~ j au-. ] = +1 is a possible result of the (v) sequence. The logic at the most significant end of the A register handles this case correctly during the (AJ sequence. If |m| j4 D and |ap| =0 when Al becomes active, control passes direc- l6 to Bl as discussed in section 5.2. The (b) sequence performs a CSB in the usual manner. 5.12 The Multiply Sequence (m) The logic for this sequence is shown on D-128l. It is used following fly in the execution of an MPY order as shown in Table I. At the time Ml becomes active, the unrounded multiplier is in AQ, and E. The fraction in AQ is normalized or at least Q contains zero. The multiplicand resides in M and EM. If the multiplier is zero, Z is set to "1". If the multi- plicand is zero, em = -6k. Let the rounded multiplier, which may or may not be normalized, be represented by a_ • k . Let the multiplicand be represented by m • k . The exponent of the product is formed in the EAU as e + em while the 90 bit frac- tional product is formed in the MAU as a_ ' m. Thus p • k = (a~ • m) • k ■222- As explained in section 3.1.15, the U6 bits fractional multiplier (in- cluding two sign bits) is recoded two bits at a time so that 2m, m, Om, and -m are the required multipliers of the fractional multiplicand. The 90 bit fractional product (including two sign bits) is obtained with 23 additions and 22 right shifts. The first two additions and right shifts occur during M3 and Uh . The next 20 occur during M5 and M6 which comprise the multiply loop. The final addi- tion without shift into AQ occurs during M7. As in section 3.1.15, assume each two bits of the rounded multiplier represents a base h multiplier digit (3. so that a. (X , a a ... a, a, becomes 1 P n , (3, ... P pp where P. =0, 1, 2, 3. The recoded base k digits B. are defined as follows B. = B. + \. - k\. _ 1 1 1 l-l where \ = \ = and \. = or 1 for < i < 21. P i The shifted partial products, j— , held in AQ and SR at each step of t the multiplication are listed below in terms of P.. 1 M3 AQ: ~ = 1/k I B 22 m L 1 * m Mh SR: -^ = l/k \— + P Q1 m h U 21 ^21 |W" L 1+ U 2 - m M5(lst) AQ: P 20 P 21 u P 22^ ■ + — 7; + ' h k kh m M6(lst) 1 1 t 1 OD V k f P 19 P 20 P 21 P 22l SR: — = + — - + — r + — 57 m ^ U k 2 h 5 it. '223- M.5(2nd) AQ: j- 2 - m M6(2nd) SR: jp = m M6(lOth) SR! P, 22 k "Pi P 2 — + — 4- U' 22 22 m MT AQ: P = P 23 P + — + — k K' 22 U 22 m During Ml, control passes to M8 via a null step if (em = -6K) ^ z = 1„ This null step is not necessary in the present control design. In M8, Z is set to "l", indicating a zero product,, OV is bypassed simply to obtain a zero reply and thus set the Gl Eccles -Jordan to "1". If z(em •-: -6k) = 1 during Ml, the contents of A are rounded by setting RO to "1" and requesting KgA„ The assimilated, rounded multiplier appears as OL, The (J. status memory element is set to "1" to permit the mode bits of the recoded multiplier to be gated into Ri_ and Q, as indicated in section 3.1.15. In the EAU the exponent of the product appears as d = em + ea = em + e = ep. During M2, the two least significant bits of the rounded multiplier, (X _0£i i , are recoded to determine the setting of the MsS mechanism. At the same time, OL is placed in R and zero is placed in S The mode bit that is generated as a consequence of recoding aft, is also placed in Rj l0 , This bit influences -22U- the recoding of the next base k multiplier digit which is presently held in R. , and R. _. Note that the recoded version of a, _ and a« > is not stored in R but is simply reflected in the setting of the MsS mechanism. This is true for all steps of the multiplication process. In the EAU, ep is placed in E and the ESOV and ESZ F-elements are set to "l" if necessary. The count of 21 is selected as an input to EA but is not actually gated into EA until M3. In M3, 2m, m, Om, or -m is added to in S to form the first partial product, p, , which is then shifted right into AQ. At the same time, r, , r, , and r. are recoded by the uMsA logic which sets the MsA mechanism accordingly. The generated mode bit is placed in Q, . The RO memeory element is set to "0" as a clean-up operation. In the EAU, 21 is transferred to EA and -2sD is select- ed so that d = 19. If esov = 1, 0V is set to "1" to indicate ep > 127. If esz =1, Z is set to "l" to indicate ep < -128. Otherwise, 0V and Z are by- passed. P l During MU, 2m, m, 0m, or -m is added to r— in AQ to form p which is * then shifted right into SR. At the same time, q, , % , and q, are recoded by the uMsS logic which sets the MsS mechanism accordingly. Tne new mode bit is placed in Rl p » In the EAU, 19 is placed in ES while the output of ES is se- lected as the input to EA. During each of the ten passes through M5, the new partial product, which appears as o and the most significant portion of R, is shifted right into AQ. The next base k multiplier digit, r ] l - [ r ] l o) along with the associated mode bit, r, , is recoded and used to set the MsA mechanism. The new mode bit is -*- placed in Q^ p . The count held in ES is gated into EA. During each of the ten passes through M6, the new partial product, which appears as a and the most significant portion of 'Q, is shifted right into SR, The next base h multiplier digit, cu q_s , together with its mode bit, q« p , ■225- -X- is recoded and used to set the MsS mechanism. The new mode bit is placed in R^ D . The count d = ea - 2 is placed in ES. The final pass through M6 merits special attention. The sign digit of the rounded multiplier, a J3. , is held in Qk-,Qkp at the start of this step. The new mode bit in Q. ? may be 1 or "0". The recoded digit, (3 , is determined as usual. If a mode bit is generated, it is thrown away, since d = -1 and u- is set to "0". Thus, a "0" is gated into Rj,p. Note that if the rounded multi- plier is negative (i.e., a_ 1 = a = 1), p = 3. If q^ =0, £ = -1 as required. If q, = 1, P n = again as required. In either case, the next mode bit is always "0". It is worthwhile to observe why R< p must be set to "0" during the final pass through M6. The two least significant bits of the product (actually the last shifted partial product) are placed in Ri and R» during this pass. In M7 the outputs of the borrow subtractor d and d, are gated into Q> , and Q, as the two least significant bits of the product. Clearly, they should be copies of r> and r, . However, they will not be unless Ri p is set to "0" as discussed in section 3.1.17. In M7, the final multiple of the multiplicand is added to the last shifted partial product in SR to obtain the product as a together with the first hk bits of R. The product is transferred straight into AQ, and KgA is selected to assimilate the stored carries in A. The assimilated fractional product, p, appears as a. together with the first hk bits of Q at the entrance to K . Note that -1 < p < 1 at this point. 5.13 The Division Sequence (D The logic for (d) is shown on D-1271, D-1272, and D-1273. It is used in conjunction with (i) and ® to execute DIV, NDV, and VID. Note that Dl, D2, -226- or D5 is always activated by a request from R3. Furthermore, if the divisor is not normalized or if NDV or VID is the order, the (RJ sequence is re-entered from DU. The requests made by the (d) sequence in Dl, D2, D3, and T)k depend on the divide order and the range of the divisor (dividend in the case of VID). At the start of D6, a fractional divisor in the range -1 < d < - l/k or l/k < d < 1 appears in M while the fractional dividend in AQ, lies in the range -1 < D < - l/k f D = 0, or 1 U < D < 1. The corresponding quotient exponent, eq, appears at the output of the exponent adder as d = ea - em = eD - ed = eq, where eD and ed represent the "normalized" (l/k < |x| < l) dividend and divisor expo- nents respectively. To insure that the fractional quotient is less than or equal to unity in magnitude, the dividend D is subnormalized in D6. The subnormalized dividend i i i r D lies in the range - l/k < D < - l/l6, D = 0, or l/l6 < D < l/k. The frac- i tional quotient q = — must lie in the range -1 < q < - l/l6 or l/l6 < q < 1 i where D = results in a premature exit to G;. The corresponding exponent cor- t rection eq = eq + 1 is not made at this point but is taken into account during the terminal steps of the 'D/ sequence. For all three divide orders a modified binary non-restoring division algorithm is used to generate the fractional quotient. The recursive relation- ships are given in section ^.l.l6. The modification consists of allowing the predicted quotient "bits" to assume the values 1, 0, -1. The term "binary" still applies since the weighting associated with each "bit", y., is still 2 As discussed in sections 3.1.16 and 3.1.17, the "bits" y^ n , and > J 2k+1 y ? , (0 < k < 22 or 23), are generated separately and then recoded as a base k quotient digit, q 1 , which may assume any value between 3 and -3. The y "bit" is determined by the pMsS logic shown on D-1507. This -227- logic is fed by m and the most significant outputs of the A-adder. The setting of the MsS mechanism is also governed by this logic. If y_, _ = -1, 2MsS is 2k+l ' selected, while y = or 1 cause OMsS or 2MsS to he selected. 2K+I The y "hit" is determined by the pMsA logic which also appears on D-1507. This logic is fed by m and the most significant outputs of the S-adder, It also determines the setting of the MsA mechanism. The "bits" y = -1, 0, and 1 correspond to settings of MsA, OMsA, and MsA. 1 1 In D6, the OMsS setting and gH correspond to y =0 for all d and D . The value of y n and the corresponding setting of the MsA mechanism are determined during the following straight transfer into AQ with D . The partial remainders (shifted or unshifted) that appear at each step of the division process are given below. D7: AQ: R Q = D - Od D9: SR: ^ = r(R Q - y Q d) = ^d' - y Q d) D10(lst pass): AQ: R 2 = kR ± - 2^= kV - d(Uy Q + 5y ) Dll(lst pass): SR: UR = 2%' - d(2 y Q + 2 3 y x + 2 2 y g ) D10(2nd pass): AQ: R^ = 2V - d(2*V + 2 3 y x + 2 2 y g + 2y 3 ) Dll(2nd pass): SR: 1+R^ = 2 6 D* - d(2 6 y Q + 2 3 y ± + 2^y 2 + 2 3 j^ + 2 2 y^) / \ kk ' / kk kl \ D10(22nd pass): AQ: R^ = 2 D - d(2 y Q + 2 ^ + . . . + 2y^) Dll(22nd pass): SR: UR^ =2 d' - d(2 y Q + 2 5 y x + ... + 2 %i^) -228- The division process stops at this point if the fractional quottei . i q = y n -y,yp ••• Y) ut appears "normalized" as discussed in section 3.1.10. Thus, if nr = 1, the remainder associated with the unrounded quotient is •kk ^ ,, ^-1 „-kk \ ,, J , ' „-kkr d(y Q + 2 y 1 + ... + 2 y^), so that D = dq + 2 R^ . If nr + 0, the division process is allowed to proceed two more steps to obtain a normalized quotient. kf> ' h(~) Us D10(23rd) AQ: R^ = 2 r D - d(2 y Q + 2 \ + . . . .+ 2y^) Dll(23rd) SR: kR^ = 2 k8 B - d(2 U8 y Q + 2^ + ... + 2 2 y^) The "bits" y = and y are discarded so that q = y-.yp.y~yj ... y^c becomes the "normalized" fractional quotient with 2 R, 7 = hB - m(2y + y + 2 Yvc) -kk ' as the remainder, or 4D - dq + 2 ^), 7 . Note that q or q denotes the fractional quotient depending on whether it appears "normalized" after 23 or 2.k divide loop cycles . In either case one more quotient "bit" yj c (yj 7 ) is always determined during the final pass through D10. This "bit" establishes the MsS setting during Dll. Furthermore, y, (y< ) and a sign comparison of divisor and next partial remainder (partial remainder beyond the final remainder) is used to round the quotient positively, negatively, or not at all. The rules for round-off are given below. Refer to section 3.1.l6 for "the coding of V| r (y, „), 4> 4( y^(y^) ra_ 1 + a_ 1 - cb Quotient Round-Off -kk -1 0.2 -kk -1 1 -1.2 -kk 0.2 -kk 1 ,0.2 -kk 1 +1.2 -kk 1 1 0.2 -229- The quotient round-off is determined while the shifted final remainder -kk , -kk s is in S. Therefore, the final remainder, R = 2 Ri <- (or 2 ^wo ^ s corrected for quotient round-off before the latter is accomplished. That is, R = R + m if the round-off is negative, R = R - m if the round-off is positive, and R - R if the round-off is zero. This occurs during DlU while q is in Q. The actual round-off of the quotient occurs in D17. The quotient in Q is transferred to S and rounded appropriately during the straight gate into Q in Dl8. The quotient exponent, eq, must be corrected for subnormal! zat ion of the dividend and possibly for the extra two steps in the divide loop (D10 and Dll). This correction is made during D12 and D13, The corrected quotient ex- 1 ponent, eq , is placed in E during Dl4 , The appropriate remainder exponent, eR, is derived in D15, Dl6, and D17. It is placed in ES during D19 unless eR < -6k in which case -6k is placed in ES. We now proceed to describe each step of the (d) sequence in detail. For all three divide orders, the contents of AQ are normalized before Dl, D2, or D5 is activated. In discussing Dl through D5, it is convenient to consider DIV and NDV first. Assume that a DIV or NDV order is being executed and that the contents of AQ during decode have just been normalized. On D-1271 note that R3 must ac- tivate D2 or D5 rather than Dl since njx6,0 = except for a VID order. Note ruther that D5 can only be activated when the number in M (i.e., the divisor) is normalized, nm = 1, and the order is DIV, Under these conditions, x(nm)e 6 = 1. The second possibility, xO 9 = 1, only applies for a VID order following the second exit from MR) „ Assume that D2 becomes active either because nm = or because the order is NDV, In D2, a is placed in R and zero is placed in S. Since KgA = 1 during ■230- decode, a represents the assimilated contents of A. If DIV is the order, MsS is requested so that the unnormalized divisor m = a appears at the output of the S-adder. For NDV, MsS is requested so that -m = a. In the EAU, the exponent of the accumulator is placed in EA and reflected as d at the output of the D-adder for either DIV or NDV. During D3, m or -m is placed in A and the gQ gate is "bypassed since Q contains the least significant half of the dividend in the case of DIV or NDV order. RO is set to "0" as a clean-up operation. Except for the VID order, RO is already in the "0" state at the start of D3. Since X is always set to "0" during Gl for DIV, NDV and VID, DL is set to "0" during this pass through D3. In the EAU, d = eD (i.e., the exponent of the normalized dividend) is placed in ES. Before normalization or negation the exponent of the divisor, em, is placed in E. In D^-, the most significant half of the dividend is transferred from R to M. X is set to "1" to indicate the first pass through D2, D3, and Dk, In the EAU, eD is transferred from ES to EM. Since Dl is set to "0", D6 cannot he activated. For DIV and NDV either Q or 6 is set to "0" so that dl(z ^ 9 ^ 6 ) = 1. This is the condition for setting EXR to "0" or "1" via gEXR and the input function discussed in section 5.10. EXR is set to "0" if the fractional divisor (m or -m) is not normalized. Since ZA is always set to "0" during Gl, D5 cannot be activated because the A register contains a zero at this point. Hence, for DIV and NDV, a premature exit to Gl via D5 with OV set to "l" cannot occur during this pass through D2, D3, and D4. It can occur for VID if Z is set to "1" as discussed later. The signal which opens the gate to EXR also activates Rl. If EXR is set to "1", R3 becomes active and control is transferred immediately to D2 in the case of DIV or NDV. If EXR is set to "0", the normalization loop (Rl, R2) -231- is initiated. The principal difference is that dl = 0, so only the contents of A are normalized. The other difference is that ZA is set to "1" if S contains zero during the first pass through R2. The exponent of the unnormalized divisor is decreased by a unit for each left shift of the fractional part in A. Since em > -6k initially if the fractional divisor is nonzero, the divisor must become normalized before dz = 1 (i.e., before the D-adder output d > -128). Thus Z is always bypassed during R2 in this second pass through Qy . If ZA is not set to "1" during the initial pass through R2, (r) continues to normalize single length until the fraction is normalized (i.e., na = l). When control returns to D2, as it must for a DIV or NDV order , the normalized fractional divisor, d, is in A with its exponents, ed, in E, During D2 the contents of A (i.e., d) is placed in R and zero is placed in S. MsS is selected so that a - m which represents the most significant half of the normal- ized fractional dividend. The divisor exponent, ed, is transferred from E to EA and reflected at the otuput of the D-adder. During D3, a = m is placed in A, but gQ is again bypassed. The norm- alized fractional dividend is now in AQ,. R0 is again set to "0" and DL is set to "1" since x = 1 during the second p?.uis through D2, D3, and Dk . In the EAU, ed is placed in ES while eD is transferred from EM to E. During DU, the normalized divisor is transferred from R to M while ed is placed in EM. X is again set to "l". D5 is now activated. If za = 1, meaning that the fractional divisor is zero, 0V is set to "1" and control is transferred to Gl. The normalized dividend may be zero eD in which case Z is also set to "1". Otherwise, D * k appears in AQ and E. The divisor, d • k , appears in M and EM. If d = 0, ed = -66 provided em = -6k during Gl. If za = 0, dl(za) = 1 and the quotient exponent, eq = eD - ed, is ■232- formed at the output of the D-adder. This exponent may or may not be the expo- nent of the final quotient. It will be if q = (D/d) lies in the normalized range, In this case, the effect of subnormalization in D6 (i.e., the effect of shifting D one base k position to the right) is exactly canceled by the extra pass through D10 and Dll to achieve a normalized quotient. If q = (D/d) lies outside the nor- malized range (i.e., 1 < |q| < h) f eq = eq + 1 will be the exponent of the final ' q quotient q = t* . In this case the subnormalization of D is not canceled by an extra pass through D10 and Dll since q appears normalized in R after 23 cycles of the divide loop. The addition of zero or a unit to eq = eD - ed occurs during D13 based on the count in ES after exit from the divide loop (D10, Dll). We return now to the case of a VID order. This order considers the con- tents of the accumulator as the divisor. Following Gl, control is transferred to R . The fraction in AQ is normalized as usual with exit from ( R) occurring as a consequence of nO! = 1 or z(dl) = 1. In contrast with DIV and NDV, R3 acti- vates Dl since njxS 9 = 1. During Dl, KgA is selected and RO is set to "l" so that cc represents the rounded and assimilated value of A. It is this quantity which is used as the fractional divisor. Since x = during this entry from (jy, control passes to D2, D3, and DU where the data handling is identical to that of a DIV order. The opening of qQ during D3 to clear Q to zero is the one exception to this. During DU, the gate to the EXR status memory element is opened and Rl is activated if Z is set to "0", i.e., if (dl)(z) = 1. If z = 1, the quantity in AQ at the start of the VID order was determined to be zero during Cr) so the divisor is zero. Hence, z9 9 = 1 activates D5 which sets OV to "l" and exits to Gl. If z = 0, the R sequence is entered for the second time. At this point, M and EM contain the normalized and rounded divisor while the quantity -233- in A and E represents the single length dividend as brought in from memory during Gl. Note that the fraction in M was rounded following normalization and may be +1 or - l/k. Either of these values may be used as the fractional divisor which is why m is used as the divisor sign bit in the predictor logic as discussed in section ^.l.l6. During this pass through (R), the fractional dividend is normalized single length even though Q contains zero. Exit occurs when no: = 1 or (za)(dl) = 1, Control is transferred from R3 to D5 since X was set to "l" during the previous pass through Dk and 9 = 9=1 for VID. In D5, the quotient exponent, eq = eD - ed, is calculated as described for the DIV and NDV orders. Again, it is important to note that eq = eq + 1 rather than eq may be the exponent of the fractional quotient which is actually computed. From this point on the discussion encompasses all three divide orders. During D5, the fractional dividend, D, is in AQ with its exponent, eD, in E and EA while the fractional divisor, d, is in M with its exponent, ed, in EM. While eq is computed in the EAU, the setting of Z is examined. If z = 0, D6 is activated. If Z = 1, the dividend is zero in the case of a DIV or NDV order, so D8 is activated. During D8, R is cleared to zero and -6k is placed in ES so that a zero remainder is stored if an SRM order follows the divide order. 0V is also bypassed in order to activate Gl. This is the second premature exit from (in . If D6 is activated following D5, the fractional dividend, D, is sub- normalized by shifting it right one base k position into SR. OMsS is selected t so that the most significant half of D = T)/k appears at the output of the S-adder. To agree with this selection, gH sets the H memory element in the pMsS predictor (D-1507) to "l". The effect of this is described in section 3. 1.17. -23 J +- In case VID is the order being executed, dl = at this point. Therefore, DL is set to "1" to permit double length left shifts during the first 23 steps of the division process. In the EAU, eq = eD - ed is placed in ES via gES which also gates the output of the exponent decoder into the ED register (D-150U). The count for the divide loop is established by placing 22 in E. As a part of D6, a decision is made to activate DT or D8 depending on whether (esz)(za) = 1 or 0. If this expression has a value of "1", eq > -128 and ZA is set to "0". This means the quotient exponent is not underflowed and, in the case of a VID order the dividend is not zero. The converse holds if (esz) ^ za = 1. In this case Z is set to "1" to indicate a zero quotient and con- trol passes to D8. In D8, R is cleared to zero and -6k is placed in ES indicating a zero remainder. Following D8, control is transferred to Gl as usual. If control passes from D6 to TfJ , the subnormalized dividend, D , is transferred straight into AQ,. The pMsA predictor determines the setting of the MsA mechanism in the manner described in section 3«1«1°« If y is 1 or -1, G2 is set to "0" or "1" and H is set to "0". In the EAU, 22 is transferred from E to EA. The selection of -2sD causes 21 to appear at the output of the D-adder since C was previously set to "1". Furthermore, 0V is set to "l" if esov = 1 (i.e., if eq > 127). Otherwise, 0V is bypassed. At the start of D9, the most significant half of the unassimilated first partial remainder appears as a. The pMsS predictor logic determines the setting of the MsS selector mechanism while OL and Q are shifted left into SR. The outputs of the G , H , G , and H memory elements (D-I507) are recoded by the quotient digit recoder logic (D-I507) to form a base k quotient digit which may lie anywhere in the range -1 < q^ < 1 during this step of the division process. •235- As described in section 3.1.17 and shown on D-152^-, 5 must be "1" before pi and pi i can be gated into Ri and R, , via gR. Inspection of D-1272 will reveal that & = 1 during D9. It should also be noted on LQR (D-152U) that * (3i cannot be set into Ri p by gR unless 6=1. This condition is not true dur- ing D9 so a "0" is placed in R , This is done to prevent the borrow-subtractor logic from decreasing the first partial remainder by a unit in the least signifi- cant position (i.e., the U2nd position) during the straight transfer into Q in D10. If q = 1, p, = p , = pi, = 1 during D9, but a "0" is placed in R, while "1" is placed in Ri and R^r. Since q represents the unmodified base k sign digit of the quotient, the "l"s in R, and Ri, will eventually be interpreted as -1 even though they both have positive weight at this point. During D9 and the rest of the division process, the EAU is used as a counter. The output of the D-adder during D9 is d = 21. This output is placed in E via DgE. The exponent of the normalized divisor, ed, is held in EM while the quotient exponent, eq = eD - ed, is held in ES. At this point eq has not been corrected in accordance with the subnormalization that occurred during D6. Following the completion of D9, control passes to the divide loop which consists of D10 and Dll. Exit to D12 depends on the count in the EAU hav- ing reached -1 and on the appearance of a "normalized" quotient in R as discussed in section 3. 1.10 During every pass through D10, the new partial remainder at the output of the S-adder and in the most significant end of R is transferred straight into AQ. The partially formed quotient which resides in the remaining bits of R is transferred into the corresponding bits of Q. If Ri p = 1, the borrow-subtractor logic reduces the quotient by a unit in the U2nd position as described in sec- tion 3.1.17. If ri = 1 and r, _ = ri 1 = 0, a borrow is made in anticipation of a negative quotient digit in the future. The bit which is borrowed is held as -236- a stored carry in Q, p since the quotient digit inserted in Rr p , R|,d> an d Rj,k is in fact zero. R<~ is set to "1" when 7 = 1, i.e., when the true sign of the previous partial remainder in AQ and the sign of the divisor disagree. This means a negative quotient digit will eventually occur even though the pMsS and pMsA logic predicted a zero. During each pass through D10, the pMsA logic at the output of the S-adder determines the new setting of the MsA mechanism as MsA, OMsA, or MsA and sets G and H accordingly. Furthermore, the contents of G and H are copied into G, and H so that the recoder can determine the next base h quotient digit. Note that even though this digit may be zero, f3, _ may be "l" because 7=1. As shown on CG (D-IO99), SEC (D-1527), and DPa (D-I507), 7 is "1" if the true sign of the partial remainder placed in AQ disagree with the sign of the divisor; i.e., a negative quotient digit will eventually arise in the infinite quotient. Since the borrow subtractor can only effect the last two bits of the quotient, a borrow must be made on the next step in anticipation of this negative quotient digit as explained above. During every pass through D10, A~ is set to "1" so that f3, can be placed in R, via gR. On the first 22 passes through D10, DL is set to 1 since rd a partial remainder is double length during this period. If a 23 — pass occurs, it is because the quotient did not appear normalized in R (i.e., nr = 0) after the 22nd pass through Dll. On the 23^ — pass es = -1 (i.e., -1 is in E), so DL is set to "0" . This prevents the sign bits of the quotient from being placed rd in S, and S. , during the 23 — pass through Dll. If these bits are zeros, they could do no harm, but if they are units they could affect the quotient round-off. rd By setting DL to "0" during the 23 — pass through D10, it is guaranteed that zeros are placed in S, and S, , . -237- The count in E is placed in EA during D10. Since -2sD is selected and C is set to "1", d = ea - 1 appears at the output of the D-adder. During the first 22 passes through Dll, the new partial remainder at the output of the A-adder and in the most significant end of Q is shifted left into SR. The quotient contained by the remaining bits of Q is likewise shifted left into R. The bit in Qi _ is lost as explained in section 3.1.17. The new base k quotient digit (B^ 2 , p^~, p^, ) is gated into R^ , R^ , and R^. The count, d = ea - 1, is gated into E„ The output of the exponent decoder is also gated into ED as usual. rd On the 23 — pass through Dll, zeros are gated into S, and S, « regard- rd less of the contents of Q, and Q since DL was set to "0" during the 23 — pass through D10. The reason for this is given above. During all passes through Dll the pMsS logic at the output of the A-adder determines the setting of the MsS mechanism as 2MsS, OMsS or 2MsS. It ! I t I sets G, and H accordingly. Note that changing the contents of the G and H will not affect the outputs of the quotient digit recoder (i.e., (\p> Ph-i> anc ^ p, , ). Note also that the quotient "bit",- Yiniyurj), placed in G, and H during the 22 — (23 — ) pass through Dll is not used to form the fractional quotient (y, is used if nr = after the 22 — pass through Dll). Instead, this "bit" is used in conjunction with the sign of the resulting partial remainder (as placed in A during D12) to determine the quotient round-off. After 22 passes through Dll, es = -1 but the fractional quotient in R may or may not appear normalized. If nr = 1, control passes directly to D12. rd If nr = 0, the 23 — pass through D10 and Dll is executed. At the end of the rd 23 — pass through Dll, the quotient in R must appear normalized, so nr = 1 and es = -2. Control then passes to D12. In D12, the partial remainder, beyond the one which is corrected for -238- quotient round-off and retained as the remainder, is placed in A. The normalized quotient in R is placed in Q. KgA is selected so that the true sign of the ex- cess partial remainder in A appears as OC . The unmodified quotient exponent, eq = eD - ed, is placed in EA. Note that the MsA request does not occur so the contents of G, and H are not transferred to G and H . In D13, the output of the carry-borrow logic is gated into CB as shown on SEC (D-1527). Since A~ is still set to "1", cb is logically equivalent to 7. There is no provision for remembering 7, so the carry -borrow logic and the CB memory element are used instead. This use necessitates the KgA request in D12. 1 The CB output is used in conjunction with the quotient digit contained by G, and H, to determine the quotient round-off. In order to place the unshifted remainder back in A, OMsS is request- ed and V is set to "1". As discussed in section 3.1.2.6 and shown on HAS (D-1522), o = l permits sa and so to be gated into A and A via gA while a is placed in A . Since OMsS is selected, sa and sa represent the assimilated value of s , s , and s . The unmodified quotient exponent, eq = eD - ed, is in EA at the start of D13. This exponent may or may not be the true exponent of the fractional quo- tient in Q at this point. The initial subnormalization of D requires that a unit be added to eq. However, if an extra cycle of the divide loop is required to achieve a normalized quotient, a unit must be subtracted from eq + 1 leaving eq. Therefore, eq is the true exponent of the fractional quotient in Q if an extra cycle of the divide loop is required. In this case, the count placed in E during the final pass through Dll was -2. Hence, the ES = -2 F-element in the ED register is set to "1". This sets C to "0" during D13. Since D13 re- quests OsD, the quotient exponent appears at the output of the D-adder. If an extra cycle of the divide loop is not required, the ES = 2 F-element is set -239- to "0" during the final pass through Dll. Hence C is set to "1" during D13 and 1 eq = dq + 1 as required. During DlU, the remainder is corrected in accordance with the quotient round-off which occurs in D17. The uncorrected remainder multiplied "by h appears in S at the start of DlU. It is right shifted into A during Dlk m Note that this depends on V being set to "1". Note also that the bits in S, and S, , are lost. If an extra cycle of the divide loop was required (i.e., if l/h < |D/d| < l), these bits are both zero. If an extra cycle was not required, (i.e., if 1 < |D/d| C h) , these bits are the two least significant bits of D. If either of these are nonzero, (&k )(qU ) + R • h will not equal D^ . ZV, is set to "0" since the output of the carry -borrow logic was used during D13. -kk As discussed earlier in this section, the quotient round-off is -1.2 / n -kb- it m_ © a = cb = 1 and 2y. (2y. ) = -2, the round-off is +1.2 if m , © a = cb = and 2y. c .(2y, ) = +2, and the round-off is zero otherwise. 1 t The last quotient "bit" predicted, y, or y^ 7 , is held in G, and H, but is not 1 t inserted in the fractional quotient. If yi.q(y). 7 ) = ~lj g-i = 1 and- h = 0. If 11. 1 1 ^5^7) = +1 > g l = h l = °* If y k^ y h^ = °> g l = ° or X and h l = 1 ' The fractional divisor is added to the remainder in A to compensate for a negative quotient round-off. It is subtracted from the remainder in A to compensate for a positive quotient round-off. Zero is added to the remainder 1 t if the quotient round-off is zero. Hence, MsA is requested if g h (cb) = 1; MsA is requested if g h (cb) = 1; and By MsA (leaving KgA as the setting) is requested if h, ^ (g , © cb) = 1. The exponent of the fractional quotient in Q, eq, or eq is gated into E during DlU. Note that C is still set to "0" if an extra cycle of the divide loop was required but is set to "1" otherwise. Note also that the 1 ESOV F-element in the ED register is set to "1" if eq or eq > 127. In D15, the fractional remainder corrected for quotient round-off, R , -2U0- appears as a and is shifted left into S. OV is set to "1" if esov - 1 and is bypassed otherwise. The divisor exponent is added to eq or eq by requesting EMsD. Thus d = eq + c + ed appears at the output of the D-adder. Note that d = eD - ed + c + ed = eD + c. Let the remainder exponent be denoted by eR. If an extra cycle of the divide loop was required, eR = eD ■■ - 23 = cD - 22. If an extra cycle of the divide loop was not required, eR = eD - 22 = eD - 21. Since C is set to "0" in the first case and to "1" in the second, it is clear that eR = eD + c - 22. This is accomplished during D17. In D15, eD + c appears at the output of the D-adder. During Dl6, kft. in S is shifted right into A and appears in assimilated form at the output of the A-adder. Its magnitude is less that or equal to half of the magnitude of the divisor. In the EAU eq + c is placed in ES. DL is set to "0" to prevent the ! K; sequence from destroying the sign bits of the fractional remainder in R in the event q or q = +1. This request is made during Dl6 simply because it is convenient from the standpoint of physical layout. From a strictly logical standpoint, it could have been made during D17, Dl8, D19, or D20. During D17, the remainder, R , is placed in R while the quotient is placed in S. If g h (cb) = 1, CS and By MM is requested to add a unit to q or q in the hk — position. If g h (cb),= 1, CS and MMsS is requested to subtract a unit from q or q in the Ui+— - position. Otherwise, zero is added to q or q by requesting By CS and By MM. The rounded quotient thus appears at the output of the S-adder. V is set to "0" since the right shift path from S to A is no longer needed. In the EAU, C is set to "0" and -22sD is requested while eq + c in ES is transferred to EA. Thus eR = eq + c - 22 appears at the output of the D-adder. During Dl8, the rounded quotient is placed in A (it may be +l) while Q is cleared to zero. Note that the quotient exponent, eq + c = eq or eq , is -2K1- held in E while eR is still appearing at the output of the D-adder. In D19, the MsS selector mechanism is cleared to zero as usual follow- ing a possible MMsS or CS request. Zero is selected to SR. If the remainder in R is zero, RZ = 1. If eR < -6k, then (d < -6k) = 1. In either case, R is cleared to zero via a gR while -6k is placed in ES, Otherwise, the remainder is retained in R and eR is gated into ES. Thus the remainder corrected for quotient round- off appears in R and ES at the end of any divide order. The [K) sequence cannot affect it since DL is set to "0". The SRM order discussed in section 5.7 must occur immediately after the divide order in the DC sequencing if the remainder is to he retained. A null step, D20, separates D19 from Kl since the gR reply is used in both D19 and Kl. -2U2- JM PIT 1969